谷歌地图地理编码在递归执行时停止

时间:2012-11-29 05:26:02

标签: loops google-maps-api-3 google-geocoder

我正在使用以下函数来加载地址的latlng从数组到数组大约40,但它在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次,当我减少超时时,迭代也会减少并停止。感谢

2 个答案:

答案 0 :(得分:0)

Google Maps API的地理编码器Javascript不适用于多点。他们否认在短时间内连续访问。

所以即使你有40分,也请使用REST版本。 https://developers.google.com/maps/documentation/geocoding/

答案 1 :(得分:0)

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

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

您应检查返回的状态,是否表示您超出限制,延迟一段时间并重试。

见安德鲁对this question

的回答