Ограничить результаты с помощью Google Geocode API - PullRequest
0 голосов
/ 17 мая 2018

Я работаю над проектом, который требует использования бесплатного API геокодирования Google. Мне нужно использовать результаты запроса API геокодирования, чтобы проверить сам запрос и убедиться, что все поля верны.

Я пытался выяснить, есть ли опция, параллельная параметру Bing api maxResults, но не могу найти ничего в документации. Параметр maxResults ограничивает количество возвращаемых адресов и, следовательно, сокращает время выполнения задания.

Вот документация Bing API, содержащая информацию о параметре maxResults. (Ctrl + F): https://msdn.microsoft.com/en-us/library/ff701714.aspx

А обзор API геокодирования Google можно найти здесь: https://developers.google.com/maps/documentation/geocoding/intro

1 Ответ

0 голосов
/ 18 мая 2018

Ваше сообщение вызывает недоумение, поскольку вы пометили его как google-maps-api-3, что технически соответствует API Карт Google Javascript v3 , но предоставленная вами документация относится к API геокодеров веб-служб .

Но, чтобы ответить на ваш вопрос, сейчас эта функция недоступна для API геокодера веб-служб , и нет способа ограничить максимальные результаты.

Ограничение возвращаемых результатов для Служба Javascript API Geocoding также недоступна, но есть обходной путь, в котором вы можете ограничить количество результатов, которые вы будете отображать на клиентской стороне ( передний конец) . Вы можете сделать это просто, не , просматривая каждый результат и ограничивая цикл только тем числом, которое вы хотите.

Вот часть примера кода, где я сделал for-loop и установил переменную len (для длины).

var s_markers = [];
var map;
function initialize() {
  var currentarea = { lat: 14.5393988, lng: 121.0521586};
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 2,
    center: {lat:0,lng:0},
    disableDefaultUI: true
  });

  var address = 'google maps'; // just used google maps since it returns multiple results
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({ 'address': address },function(results, status) {
    // var len = results.length;
    var len = 2; //declare here the number of wanted result
    for (var x=0; x<len; x++){
      var pos = results[x].geometry.location;
      map.panTo(pos);
      var s_mark = new google.maps.Marker({
        position: pos,
        title: results[x].formatted_address,
        map: map
      });
      s_markers.push(s_mark);
    }
  });
}

Первоначально я использовал здесь var len = results.length, чтобы отобразить все результаты в виде маркера. Но чтобы ограничить отображаемые результаты, вы можете установить это как var len = 2 или var len = 1. Исходное количество возвратов здесь 3.

Вы можете увидеть полный код здесь: http://jsbin.com/nagadis/edit?html,js,output

Однако, если вам нужна эта функция, в которой вы можете ограничить количество результатов, лучшее, что вы можете с этим сделать, это подать Запрос о функции в Google Issue tracker

Надеюсь, это помогло!

...