Google Maps Geocoding API不正确的速率限制

时间:2011-10-31 15:33:59

标签: javascript google-maps map

我正在为我公司使用的其中一个内部工具添加映射功能。简而言之,我们有一个大约需要放在地图上的50个地址的列表。我正在使用谷歌地图,因此它是一个交互式地图,然后是用于地理编码和添加标记的JavaScript API。

根据Google's documentation,我被限制为每秒10个请求。所以,我已经将我的javascript设置为通过一组地址进行流失,并在​​每个批次之间设置延迟。

所以我的函数设置了两个我可以设置的confif变量:addressesPerBatch和timeoutPerBatch - 非常明显每个应该做什么。您会认为,从Google的文档来看,我将被允许

 addressesPerBatch = 10;
 timeoutPerBatch = 1000; //That's in milliseconds

我当然不是。当我快速发送请求时,我很快达到了我的速率限制。我发现的最佳点实际上是“

 addressesPerBatch = 2;
 timeoutPerBatch = 2000;

那么,这是我的javascript问题,还是谷歌速率限制的问题?

我已经创建了一个jsfiddle,因此您可以更好地了解我正在做的事情: http://jsfiddle.net/Qt4gV/1/

2 个答案:

答案 0 :(得分:1)

根据Google代码页上类似问题的答案:“不会披露地理编码API请求率限制,以帮助减少服务滥用。” https://code.google.com/p/gmaps-api-issues/issues/detail?id=3099#c4

与@jwegner在评论中提到的一样,应该检查返回的状态代码并为“OVER_QUERY_LIMIT”案例实现常量退避。

答案 1 :(得分:0)

当我进行大批量的地理编码时,我在每次查询之间连续执行了大约0.25秒的超时。这不会引起问题,但仍然足够快。数据库更新的时间远远长于地理编码的请求/响应。

此外,如果您拥有Premier许可证,请确保遵循有关向请求添加签名的说明,否则您的请求将被视为您使用免费许可证。当我在开发服务器上进行少量测试运行时,我最大限度地利用每日限制时学到了很多东西!