2016-02-10 74 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?