首页 > 解决方案 > 使用 Google Geocode API 限制结果

问题描述

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

我一直在尝试查看是否有与 Bing apimaxResults参数平行的选项,但似乎在文档中找不到任何内容。该maxResults参数限制了返回的地址数量,因此使作业花费的时间大大减少。

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

谷歌地理编码 API 的概述可以在这里找到: https ://developers.google.com/maps/documentation/geocoding/intro

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

解决方案


您的帖子非常令人困惑,因为您将其标记google-maps-api-3为技术上适用于Google Maps Javascript API v3但您提供的文档适用于Web Services Geocoder API

但要回答您的问题,目前此功能不适用于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 问题跟踪器中提交功能请求

希望这有帮助!


推荐阅读