如何在没有收到 OVER_QUERY_LIMIT 响应的情况下对 20 个地址进行地理编码?

新手上路,请多包涵

使用 Google Geocoder v3,如果我尝试对 20 个地址进行地理编码,我会得到一个 OVER_QUERY_LIMIT 除非我将它们间隔约 1 秒,但在我的标记全部放置之前需要 20 秒。

除了提前存储坐标外,还有其他方法吗?

原文由 Michiel van Oosterhout 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 748
2 个回答

不,真的没有任何其他方法:如果您有很多位置并想在地图上显示它们,最好的解决方案是:

  • 在创建位置时使用地理编码器获取纬度+经度
  • 将它们与地址一起存储在您的数据库中
  • 并在要显示地图时使用那些存储的纬度+经度。

当然,这是考虑到与位置咨询相比,您创建/修改位置的次数要少得多。

是的,这意味着您在保存位置时必须做更多的工作——但这也意味着:

  • 您将能够按地理坐标进行搜索
    • 即“ _我想要一个靠近我现在所在位置的点列表_”
  • 显示地图会快很多
    • 即使上面有 20 多个位置
  • 哦,还有 (最后但并非最不重要) :这会起作用;-)
    • 您不太可能在 N 秒内达到 X 地理编码器调用的限制。
    • 而且您不太可能达到每天 Y 地理编码器调用的限制。

原文由 Pascal MARTIN 发布,翻译遵循 CC BY-SA 2.5 许可协议

实际上,您不必为每个请求等待整整一秒。我发现如果我在每个请求之间等待 200 毫秒,我就能够避免 OVER_QUERY_LIMIT 响应并且用户体验是可以接受的。使用此解决方案,您可以在 4 秒内加载 20 件物品。

 $(items).each(function(i, item){

  setTimeout(function(){

    geoLocate("my address", function(myLatlng){
      ...
    });

  }, 200 * i);

}

原文由 gabeodess 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题