JavaScript HTML谷歌地图API地理编码服务问题

JavaScript HTML谷歌地图API地理编码服务问题,javascript,google-maps-api-3,for-loop,geocoding,Javascript,Google Maps Api 3,For Loop,Geocoding,我正在尝试使用谷歌地图api绘制多个地址。我在从地理编码服务返回超过11个测试地址的位置值时遇到问题。测试地址分别返回有效的latlng值。我提供的示例代码将运行,但当地址[11]未被注释掉时,它将不会运行 var geocoder; var map; var counter = -1; var address = []; address [0] = {loc:'memphis tn', pop:5}; address [1] = {loc:'125 ketay', pop:2};

我正在尝试使用谷歌地图api绘制多个地址。我在从地理编码服务返回超过11个测试地址的位置值时遇到问题。测试地址分别返回有效的latlng值。我提供的示例代码将运行,但当地址[11]未被注释掉时,它将不会运行

var geocoder;
var map;
var counter = -1;
  var address = [];
  address [0] = {loc:'memphis tn', pop:5};
  address [1] = {loc:'125 ketay', pop:2};
  address [2] = {loc:'tenafly nj', pop:4};
  address [3] = {loc:'california', pop:3};
  address [4] = {loc:'kansas city', pop:1};
  address [5] = {loc:'lake erie', pop:1};
  address [6] = {loc:'chicago', pop:1};
  address [7] = {loc:'oregon', pop:1};
  address [8] = {loc:'idaho', pop:1};
  address [9] = {loc:'nevada', pop:1};
  address [10] = {loc:'georgia', pop:1};
  //address [11] = {loc:'Las Vegas', pop:1};

var k = 0;
function initialize() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var mapOptions = {
    zoom: 5,
    center: latlng
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);


 for (k = 0; k < address.length; k++){
  geocoder.geocode( {'address': address[k].loc}, function(results) {
  counter ++;
      map.setCenter(results[0].geometry.location);

 var cir = new google.maps.Circle({
      strokeColor: '#FF0000',
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: '#FF0000',
      fillOpacity: 0.35,
      map: map,
      center: results[0].geometry.location,
      radius: address[counter].pop * 100000
  });

  });
}
}

google.maps.event.addDomListener(window, 'load', initialize);
var地理编码器;
var映射;
var计数器=-1;
var地址=[];
地址[0]={loc:'memphis tn',pop:5};
地址[1]={loc:'125 ketay',pop:2};
地址[2]={loc:'tenafly nj',pop:4};
地址[3]={loc:'california',pop:3};
地址[4]={loc:'kansas city',pop:1};
地址[5]={loc:'lake erie',pop:1};
地址[6]={loc:'chicago',pop:1};
地址[7]={loc:'oregon',pop:1};
地址[8]={loc:'idaho',pop:1};
地址[9]={loc:'nevada',pop:1};
地址[10]={loc:'georgia',pop:1};
//地址[11]={loc:'Las Vegas',pop:1};
var k=0;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
变量映射选项={
缩放:5,
中心:拉丁
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
for(k=0;k
看来谷歌是在惩罚你电话打得太快。它一定认为你在滥发API。我修改了you's代码示例,并在GoogleAPI调用之间添加了250毫秒的延迟,效果很好。你可以玩弄一下延迟的时间有多短

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&libraries=places"></script>
<script>
var geocoder;
var map;
var counter = -1;
  var address = [];
  address [0] = {loc:'memphis tn', pop:5};
  address [1] = {loc:'125 ketay', pop:2};
  address [2] = {loc:'tenafly nj', pop:4};
  address [3] = {loc:'california', pop:3};
  address [4] = {loc:'kansas city', pop:1};
  address [5] = {loc:'lake erie', pop:1};
  address [6] = {loc:'chicago', pop:1};
  address [7] = {loc:'oregon', pop:1};
  address [8] = {loc:'idaho', pop:1};
  address [9] = {loc:'nevada', pop:1};
  address [10] = {loc:'georgia', pop:1};
  address [11] = {loc:'Las Vegas', pop:1};

var k = 0;
function initialize() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var mapOptions = {
    zoom: 5,
    center: latlng
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);


 for (k = 0; k < address.length; k++){

 //alert( address[k].loc );
  geocoder.geocode( {'address': address[k].loc}, function(results) { setTimeout( function(){
  counter ++;
      map.setCenter(results[0].geometry.location);

 var cir = new google.maps.Circle({
      strokeColor: '#FF0000',
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: '#FF0000',
      fillOpacity: 0.35,
      map: map,
      center: results[0].geometry.location,
      radius: address[counter].pop * 100000
  });
  }, 250 )
  });
}
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
<body>
<div id='map-canvas' style='width: 700px; height: 600px'>
</div>
</body>

var地理编码器;
var映射;
var计数器=-1;
var地址=[];
地址[0]={loc:'memphis tn',pop:5};
地址[1]={loc:'125 ketay',pop:2};
地址[2]={loc:'tenafly nj',pop:4};
地址[3]={loc:'california',pop:3};
地址[4]={loc:'kansas city',pop:1};
地址[5]={loc:'lake erie',pop:1};
地址[6]={loc:'chicago',pop:1};
地址[7]={loc:'oregon',pop:1};
地址[8]={loc:'idaho',pop:1};
地址[9]={loc:'nevada',pop:1};
地址[10]={loc:'georgia',pop:1};
地址[11]={loc:'Las Vegas',pop:1};
var k=0;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(-34.397150.644);
变量映射选项={
缩放:5,
中心:拉丁
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
for(k=0;k
您是否达到了利率上限?“此外,Web服务的速率是有限的,因此,传入的请求过快会导致阻塞。”如果不在回调函数中检查,则可能会出现重复的请求。