0

アドレスから緯度経度を見つける必要があり、それらすべてをグローバル配列変数にロードしたいのですが、ここで私がやっていること

  for(i=0; i<locations.length; i++){

    var paddress = locations[i]['address'] +','+locations[i]['postal_code'] + ', ' +locations[i]['district'] + ',' + 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;

        }
    });
    }


    alert(Storelatlong.length);

しかし、それは常に長さ0を返します。ジオコーダー関数内でアラートを出すと、latlongがうまくいきます。ジオコーダー内からグローバル変数にデータを割り当てる他の方法はありますか、ありがとう

4

1 に答える 1

0

問題は、グーグルからの応答を受け取るまでに、私はもう定義されていないということだと思います。クロージャーで修正してみてください。

pgeocoder.geocode( { 'address': paddress}, (function(index) {
      return function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            Storelatlong[index] = results[0].geometry.location;
        };
      }(i))
);
于 2012-07-10T06:34:08.620 に答える