Google映射10个请求/秒?

时间:2016-02-10 09:11:58

标签: javascript google-maps google-maps-api-3

我非常擅长粘贴代码,所以这里是一个完整的运行示例:     https://plnkr.co/edit/klOViMslWjBFy3KTq507?p=preview

<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>

我每100毫秒发送一次请求,这意味着我发送10个请求/秒,这是客户端的确切限制。 然而我仍然得到OVER_LIMIT错误.... 为什么呢?

1 个答案:

答案 0 :(得分:0)

谷歌地图有配额和速率限制。谷歌的限制似乎比他们在文档中提出的限制更多,很可能取决于服务器负载。我做了一个类似的应用程序,我有不同的限制取决于小时和日期(意味着当更多人想要访问地理编码时,他们会抛出更多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?