我正在向我公司使用的内部工具之一添加映射功能。长话短说,我们有一个包含大约 50 个地址的列表,这些地址需要放在 map 上。我正在使用 Google map ,因此它是一个交互式 map ,然后是用于地理编码和添加标记的 javascript API。
根据 Google's documentation ,我被限制为每秒 10 个请求。因此,我将我的 javascript 设置为搅动地址数组,并在每批之间设置延迟。
所以我的函数设置了两个我可以设置的 confif 变量:addressesPerBatch 和 timeoutPerBatch - 很明显每个变量应该做什么。你会认为,从谷歌的文档来看,我会被允许
addressesPerBatch = 10;
timeoutPerBatch = 1000; //That's in milliseconds
我肯定不是。当我如此快速地发送请求时,我很快就达到了我的速率限制。我发现的甜蜜点实际上就在周围”
addressesPerBatch = 2;
timeoutPerBatch = 2000;
那么,这是我的 javascript 问题,还是 Google 的速率限制问题?
我创建了一个 jsfiddle,因此您可以更好地了解我在做什么: http://jsfiddle.net/Qt4gV/1/
最佳答案
根据 Google 代码页上对类似问题的回答:“不公开 Geocoding API 请求速率限制以帮助最大程度地减少服务滥用。” https://code.google.com/p/gmaps-api-issues/issues/detail?id=3099#c4
就像@jwegner 在评论中提到的那样,应该检查返回的状态代码并针对“OVER_QUERY_LIMIT”的情况实现常量退避。
关于javascript - Google Maps Geocoding API 不正确的速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955899/