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

クライアントジオコーダーは、ページの読み込み時に多くのポイントをジオコーディングすることを目的としていません。これは、ユーザーが入力したアドレスをジオコーディングすることを目的としています。

これは非同期であり、クォータとレート制限の対象となります。制限は、最大10ポイントをすばやくジオコーディングできるように設定されています(サーバーの負荷によって異なります)。

返されたステータスを確認し、制限を超えていることを示している場合は、一定期間遅延して再試行する必要があります。

この質問に対するアンドリューの答えを参照してください

于 2012-11-29T10:58:51.457 に答える
0

Google Maps API Javascript の Geocoder は、多くのポイントに適していません。短時間の連続アクセスを拒否します。

40点でもREST版をご利用ください。 https://developers.google.com/maps/documentation/geocoding/

于 2012-11-29T05:32:14.703 に答える