使用谷歌地图时OVER_QUERY_LIMIT

时间:2010-08-20 09:45:15

标签: google-geocoder

我从我的应用程序访问谷歌地图时遇到问题,当我从java脚本循环发送超过10个请求时,我从地理编码器服务获得OVER_QUERY_LIMIT异常。 有什么方法可以摆脱这个,我尝试使用setInterval()等给出一些时间延迟..但是没有用。

6 个答案:

答案 0 :(得分:11)

可能您每秒发送的请求过多,Google不允许您这样做。

阅读http://code.google.com/apis/maps/faq.html#geocoder_classorhttp

答案 1 :(得分:3)

JavaScript API中的地理编码是速率限制的。首次加载API时,您可以在获得OVER_QUERY_LIMIT响应之前发送10个地址编码请求或5个反向(latlng)地理编码请求。当你这样做时,使用" exponential backoff"推迟查询。

您可能还想加入Issue 4805(gmaps-api-issues)中的讨论。

答案 2 :(得分:1)

如果您使用的是自动填充功能,请尝试使用Google的Places Autocomplete API。 (尽管这不是他所要求的,但我认为很多人会从这个问题到达这里)

答案 3 :(得分:0)

拥有API列表,并为每个请求随机使用它们。 例如python中的例子

like keys = [key1,key1,key3 ....]

location = Geocoder(random.choice(keys)).geocode(address) 

location = Geocoder(random.choice(keys)).reverse_geocode(Lat,Long)

根据您的要求

答案 4 :(得分:0)

我们可以使用ajax队列。

在20时,ajax请求将被执行,其他人将在队列中等待。

创建多个地理编码密钥并保留在一个数组中,并为每个ajax请求随机使用它。

这里我加载了2200个标记。添加2200个位置大约需要1分钟。

<https://jsfiddle.net/suchg/qm1pqunz/11/>

答案 5 :(得分:0)

首先阅读本文。 https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

如果您在一秒钟内发送了许多请求,请使用延迟方法。

function sleep(milliSeconds) {
  var startTime = new Date().getTime();
  while (new Date().getTime() < startTime + milliSeconds);
}

在循环结构中调用此方法。       睡眠(2200);