使用Google Geocode API限制结果

时间:2018-05-17 16:42:17

标签: google-maps-api-3 bing-api geocode

我正在开发一个需要使用免费的Google地理编码API的项目。我需要使用Geocoding API查询的结果来验证查询本身并确保所有字段都正确。

我一直在尝试查看是否有与Bing api maxResults参数并行的选项,但似乎无法在文档中找到任何内容。 maxResults参数限制了返回的地址数,因此可以缩短工作时间。

这是Bing API文档,其中包含有关maxResults参数的信息。 (CTRL + F): https://msdn.microsoft.com/en-us/library/ff701714.aspx

可以在此处找到Google地理编码API的概述: https://developers.google.com/maps/documentation/geocoding/intro

1 个答案:

答案 0 :(得分:1)

您的帖子非常混乱,因为您将其标记为google-maps-api-3,技术上是 Google Maps Javascript API v3 ,但您提供的文档是 Web Services Geocoder API < / strong>即可。

但是要回答您的问题,目前此功能不适用于 Web服务地理编码器API ,并且无法限制最大结果。

限制 Javascript API地理编码服务的返回结果也不可用,但有一个方法可以限制您将在客户端显示的结果数量(前端)。您只需通过循环遍历每个结果,然后将循环限制为您想要的数字即可。

以下是我执行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 = 2var len = 1。此处的原始退货数为3

您可以在此处看到完整代码:http://jsbin.com/nagadis/edit?html,js,output

  

但是,如果您希望此功能可以限制结果数量,那么您可以做的最好的事情是在Google Issue tracker

中提交功能请求

希望这有帮助!