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