40

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

4

6 回答 6

15

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

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

于 2010-08-23T07:58:23.247 回答
4

JavaScript API 中的地理编码是有速率限制的。首次加载 API 时,您可以发送 10 个地址地理编码请求或 5 个反向(latlng)地理编码请求,然后才能收到 OVER_QUERY_LIMIT 响应。当你这样做时,使用“指数退避”来延迟你的查询。

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

于 2016-09-03T06:51:05.653 回答
1

如果您使用的是自动完成功能,请尝试使用 Google 的Places Autocomplete API。(尽管这不是他所问的,我想很多人会从这个问题来到这里)

于 2014-02-08T20:53:45.293 回答
0

我们可以使用ajax队列。

一次将执行 20 个 ajax 请求,其他请求将在队列中等待。

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

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

<https://jsfiddle.net/suchg/qm1pqunz/11/>
于 2016-11-06T11:24:13.343 回答
0

有一个 API 列表并为每个请求随机使用它们。例如在 python 中

像键 = [key1,key1,key3....]

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

或者

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

根据您的要求

于 2015-10-05T11:59:54.987 回答
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);

于 2019-02-05T14:01:51.817 回答