2012-09-03 147 views
0

Google地圖對API使用有限制: 所有Web服務每個Web服務每秒10個請求的速率限制。 Google Places API具有單獨的使用限制。 Ref:​​Google Maps API v3:處理使用限制

我發送超過10個請求到Google地圖API。 下面是我用JQuery.ui.maps寫了一個示例代碼:

$('#map').gmap('displayDirections', { 
      'origin': new google.maps.LatLng(42.645573,-71.098326), 
      'destination': new google.maps.LatLng(42.345573,-72.298326), 
      'travelMode': google.maps.DirectionsTravelMode.DRIVING }, 
      {suppressMarkers: true},function(success, result) { 
       if (success) 
        alert('Results found!'); 
      }); 

我已經更新了以下jQuery函數按我的要求。 我爲每個請求添加了1秒的睡眠/延遲。

displayDirections: function(current, directionsRequest, directionsRendererOptions, callback) { 
     alert("displayDirections "+current); 
     var startTime = new Date().getTime(); // get the current time 
      while (new Date().getTime() < startTime + 1000) { 
      } // hog cpu 
     var self = this;   
     var directionService = this.get('services > DirectionsService', new google.maps.DirectionsService()); 

     var directionRenderer =new google.maps.DirectionsRenderer(directionsRendererOptions); 

     directionService.route(directionsRequest, function(results, status) { 
      alert("directionService Called " + current); 
      var startTime = new Date().getTime(); // get the current time 
      while (new Date().getTime() < startTime + 1000) { 
      } // hog cpu 
      if (status === 'OK') { 
       directionRenderer.setDirections(results); 
       directionRenderer.setMap(self.get('map')); 
      } else { 
       alert(status) 
       directionRenderer.setMap(null); 
      } 
      self.get('directionRenderers').push(directionRenderer); 

      callback(results, status); 
     }); 
    } 

但它不按要求工作。 有人可以通過展示如何解決此限制來幫助我。

如果需要更多細節,請告訴我。

謝謝。

+0

這不是一個睡眠....有沒有聽說過setTimeout? – Adam

+0

感謝@Adam的幫助。使用'setTimeout' – DarkKnightFan

回答

1

您可以檢查「OVER_QUERY_LIMIT」的狀態,如果你得到這個,那麼你可以延遲幾秒鐘,就像$ .delay(3000):http://api.jquery.com/delay/

你超過每日最高限額,或10 /秒限制?

+0

我超過了10 /秒的限制 – DarkKnightFan