我想知道是否有人有时会遇到与我相同的问题:
我正在查询 Google 的服务器,并使用类似于以下内容的 setTimeout()
循环对某些位置进行地理编码:
//...
var loop = function() {
setTimeout(function() {
// Here I do the geocode request and create a CustomOverlay which I then show on the map.
setTimeout(loop, 0); // Let the browser do some other work, e.g. rendering
}, 125);
};
loop();
//...
现在,我将超时设置为 125
毫秒,这意味着 1 秒内最多发出 8 个请求 (8 * 125 = 1000
)。但有时,当脚本执行一段时间后,我会收到 Google 的 OVER_QUERY_LIMIT
状态代码。
现在文档 ( https://developers.google.com/maps/documentation/geocoding/usage-limits ) 说:
Users of the standard API:
- 2,500 free requests per day
- 10 requests per second
为什么在我的案例中返回OVER_QUERY_LIMIT
?是因为我还创建了自定义Overlay
吗?我对每个结果使用方法 overlayProjection.fromLatLngToDivPixel()
将从地理编码器返回的 lat
和 lng
转换为像素并绘制叠加层在 map 上。也许是因为这个?
感谢您的关注。
最佳答案
从长远来看,每天 2500 个请求相当于每个请求 34.56 秒。每秒 10 个请求的速率限制仅在短时间内有效(大约 10 个请求)。
(24 小时/天 * 60 分钟/小时 * 60 秒/分钟)/2500 个请求 = 34.56 秒/请求
每天 2500 个请求是硬性限制。每秒 10 个请求可能会根据服务器负载和其他因素(包括您最近的请求历史记录)而发生变化。
关于javascript - Google map 地理编码 API 每秒配额限制与文档不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188570/