2016-12-05 13 views
-1

GoogleのジオコーディングAPIからフォーマットされた結果を格納する配列を使用しています。関数呼び出しの後、私はconsole.logを使って正しく動作している配列の内容を見ていますが、個々の要素にアクセスしようとすると "undefined"が返されます。配列の長さもチェックするとゼロになります。ここに私のコードは、(アドレス入力は3つのアドレスを格納したオブジェクトである)である:Javascriptグローバル配列は未定義を返します

function startGeocode(addressInput) { 
    var addressOut = []; 
    var outString = ""; 
    var address = ""; 
    for(var i = 0; i < addressInput.length; i++) { 
    address = addressInput[i].address + " " + addressInput[i].city + " " + addressInput[i].state + " " + addressInput[i].zip; 
    geocoder.geocode({'address':address}, function(results,status) { 
     if(status == 'OK') { 
     outString = "" + results[0].geometry.location; 
     outString = outString.replace(/\(|\)|\s/g,''); 
     outString = outString.replace(/\,/g,' '); 
     addressOut.push(outString); 
     } else { 
     outString = "Error: " + status; 
     addressOut.push(outString); 
     } 
    }); 
    } 
    console.log(addressOut); 
    console.log(addressOut[0]); 
    console.log(addressOut.length); 
} 

3つのにconsole.logの呼び出しは次のように返します。

/* (Using a codeblock for readability) 
Array[0] 
0:"(a correctly formatted latitude and longitude)" 
1:"(a correctly formatted latitude and longitude)" 
2:"(a correctly formatted latitude and longitude)" 

addressOut[0]: undefined 

addressOut.length: 0 
*/ 

だから私の質問は、なぜ私は、配列の長さ取得していますされます配列の要素を参照できないのはなぜですか?

答えて

2

非同期機能geocoder.geocodeを使用しているためです。これは、この関数が終了する前にコンソール変数に出力していることを意味します。コールバックまたは約束を使用してください。

+0

多分この原因エラー – Mahi

関連する問題