2016-02-10 73 views
0

林在这里粘贴代码,所以这里很不好是一个完整的运行例如: https://plnkr.co/edit/klOViMslWjBFy3KTq507?p=preview谷歌地图10个请求/秒?

<html> 
    <body> 
<script> 
    function initMap() { 
    geocoder = new google.maps.Geocoder(); 
    console.log('sending requests'); 
    geocodeAddress(geocoder,0); 
    } 
    function geocodeAddress(geocoder,cnt) { 
    if(cnt==50){ 
     console.log('ending sending 50 requests'); 
     return ; 
    } 
var address = 'USA'; 
console.log('sending request'); 
geocoder.geocode({'address': address}, function(results, status) { 

if (status === google.maps.GeocoderStatus.OK) { 
console.log('got response OK'); 
} else { 
    console.error('got response wrong',status); 
} 
}); 

setTimeout(function(){ 
geocodeAddress(geocoder,cnt+1); 
},100); 
} 
</script> 

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?china=false&v=3.20&libraries=weather,geometry,visualization&language=en&sensor=false&callback=initMap"></script> 
</body> 


</html> 

林每100ms发送请求,这意味着我发送10个请求/秒这是确切的客户端限制。 仍然即时获取OVER_LIMIT错误.... 为什么?

+0

好像已经超出您的使用限制。 – Kruga

+0

[使用限制](https://developers.google.com/maps/documentation/javascript/usage) – Craicerjack

+0

尝试等待几秒钟,然后执行一个请求。如果它仍然表示超过限额,那么您可能达到每日上限。否则,请尝试每秒处理少于10次的请求,直到您没有收到错误。我在10秒的限制内找不到来源,可能会有所不同。 – Kruga

回答

0

谷歌地图有配额和速率限制。 Google对限制的限制比它在文档中的限制更多,这很可能取决于服务器加载。我做了一个类似的应用程序,我有不同的限制取决于小时和日期(这意味着当更多人想要访问地理编码时,他们会抛出更多的OVER_LIMIT)。

我的经验说,只有当你这样做

setTimeout(function(){ 
    geocodeAddress(geocoder,cnt+1); 
},1000); 

你不会得到OVER_LIMIT。

您将在这里找到更多的解决方案: OVER_QUERY_LIMIT in Google Maps API v3: How do I pause/delay in Javascript to slow it down?