1

我正在使用以下函数从一个数组加载大约 40 个数组的地址 latlng,但它在 10 次迭代后停止。

 loadStoreLatLong(40);


   function loadStoreLatLong(i){     


    var paddress = store_locations[i]['address'] +','+store_locations[i]['postal_code'] + ', ' +store_locations[i]['district'] + ',' + store_locations[i]['country'];
    var  pgeocoder = new google.maps.Geocoder();

    pgeocoder.geocode( { 'address': paddress}, function(results, status) {  
        if (status == google.maps.GeocoderStatus.OK) {

        Storelatlong[i] = results[0].geometry.location;
        i--;

        if(i<0){

   clientLocation();

        }else{

   loadStoreLatLong(i);

    //var t = setTimeout("loadStoreLatLong("+(i)+")",1000);
    //jQuery('#map_canvas').text('Loading ... '+i);

        }
        }
    });
}

我真的被困在那里,任何人都可以帮助解决这个问题,当我设置超时 1000 时,这会很好地迭代 40 次,当我减少超时时,迭代也会减少并停止。谢谢

4

2 回答 2

0

Google Maps API Javascript 的地理编码器不适合很多点。他们在短时间内拒绝连续访问。

因此,即使您有 40 分,也请使用 REST 版本。 https://developers.google.com/maps/documentation/geocoding/

于 2012-11-29T05:32:14.703 回答
0

客户端地理编码器不适用于对页面加载时的大量点进行地理编码。它用于对用户输入的地址进行地理编码。

它是异步的,受配额和速率限制。设置了限制,以便您可以快速对大约 10 个点进行地理编码(取决于服务器负载)。

您应该检查返回的状态,如果表明您超出限制,请延迟一段时间并重试。

见安德鲁对这个问题的回答

于 2012-11-29T10:58:51.457 回答