【问题标题】:Google Maps API limitations when searching multiple bounds?搜索多个边界时的 Google Maps API 限制?
【发布时间】:2013-06-20 11:21:16
【问题描述】:

我正在遍历一个边界数组

boundsarr[1] = new google.maps.LatLngBounds(new google.maps.LatLng(30.567183835166453, -81.72319182746412), new google.maps.LatLng(31.05927189755539, -81.68857520400456));

//boundsarr[2] = ...

//continues...

并按关键字返回每个边界的位置。我能够获得超过 60 个位置(这是 API 限制),因为我正在搜索不同边界的位置,但是当我有很多边界(例如 100 个)时,仅返回 3 或 4 个边界。

这是random 行为...我不知道为什么会这样。我的猜测是 API 在找到地点时停止处理。

如果您可能知道原因,请提供一些线索!

http://jsfiddle.net/5Czyz/

【问题讨论】:

  • 请给一些代码?你在检查错误吗?听起来调用正在返回错误(可能会遇到查询限制)。
  • @geocodezip 抱歉,这是一个示例 jsfiddle.net/5Czyz。我在从迈阿密到纽约的 2 英里范围内搜索关键字。 259 界。如您所见,它只返回一个区域的地点。

标签: javascript api google-maps google-maps-api-3


【解决方案1】:
  • 如果有错误,你不会报告状态,如果你添加代码来报告错误,你会收到很多烦人的警报,报告 ZERO_RESULTS 和 OVER_QUERY_LIMIT

http://jsfiddle.net/5Czyz/2/

    function callback(results, status) { 
      if (status == google.maps.places.PlacesServiceStatus.OK) {
        for (var i = 0; i < results.length; i++) {
          createMarker(results[i]);
        }
      } else alert("Places request failed: "+status);
    }   
  • places 服务受配额和速率限制,触发一堆这样的查询会出现问题。

查看我对this question 的回答,它似乎可以返回一组边界的结果,但不确定它的可扩展性(你的边界数组很大)。

【讨论】:

  • 谢谢!我知道如何使用位置服务沿路线返回结果,但我试图弄清楚如何解决查询限制。如果遇到查询限制错误,可能会创建多个请求......我不确定。
  • 我的建议是序列化您的请求(如我参考的问题中的示例),然后如果您获得 OVER_QUERY_LIMIT 的状态,请使用 setTimeout 延迟一段时间,然后重试请求.请注意,所需延迟可能会因 Google 服务器上的负载而异。
  • 但是,我怀疑对于这么长的路线(迈阿密到纽约),您不会想要这样做,这会花费太长时间,而且数据量不会有用。跨度>
  • 可能最好的解决方案是为每秒增加的请求付费。
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 2018-01-03
  • 2013-07-12
  • 1970-01-01
  • 2015-04-14
相关资源
最近更新 更多