我正在向我公司使用的内部工具之一添加映射功能。长话短说,我们有大约 50 个需要放置在地图上的地址的列表。我使用 Google 地图,使其成为交互式地图,然后使用 javascript API 进行地理编码和添加标记。
根据谷歌的文档 http://code.google.com/apis/maps/documentation/premier/faq.html#usage_limits,我限制每秒 10 个请求。因此,我将 JavaScript 设置为搅动地址数组,并在每个批次之间添加延迟。
因此,我的函数设置了两个可以设置的配置变量:addressesPerBatch 和 timeoutPerBatch - 非常明显每个变量应该做什么。你可能会认为,从谷歌的文档来看,我会被允许
addressesPerBatch = 10;
timeoutPerBatch = 1000; //That's in milliseconds
我肯定不是。当我如此快速地发送请求时,我很快就达到了速率限制。我发现的最佳位置实际上就在“周围”
addressesPerBatch = 2;
timeoutPerBatch = 2000;
那么,这是我的 javascript 的问题,还是 Google 的速率限制的问题?
我创建了一个 jsfiddle,这样你就可以更好地了解我在做什么:http://jsfiddle.net/Qt4gV/1/ http://jsfiddle.net/Qt4gV/1/
根据 Google 代码页上类似问题的答案:“Geocoding API 请求速率限制不得公开,以帮助最大限度地减少服务滥用。”https://code.google.com/p/gmaps-api-issues/issues/detail?id=3099#c4 https://code.google.com/p/gmaps-api-issues/issues/detail?id=3099#c4
就像 @jwegner 在评论中提到的那样,应该检查返回的状态代码并针对“OVER_QUERY_LIMIT”情况实施恒定的退避。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)