0

私は次のジオコード非同期メソッドを持っています.私が入力したものとは異なるフォーマットされた住所、「Googleはいくつかの市外局番を追加し、Stを通りに変更するなど.」したがって、これらの結果が返されたときに、このメソッドの非同期性のために各オブジェクトに取得した新しい緯度と経度の座標を一致させる方法がなく、結果が順番に返されません。ここでできることはありますか?

ありがとう。

編集:私の考えでは、結果を元に戻す方法を作成し、これを同期に変更します。理想的ではなく、例が見つかりません。

関数 iterateAndAddress(objArray) {

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

        var address = objArray[i].BillingStreet +' '+objArray[i].BillingCity+' '+objArray[i].BillingCountry;
        var geocoder = new google.maps.Geocoder();
        console.log('Address = '+address);

        if(geocoder) {
            geocoder.geocode( { 'address': address}, function(results, status) { 

                if (status == google.maps.GeocoderStatus.OK) {

                    //console.log(results);
                    var lat = results[0].geometry.location.lat();
                    var lon = results[0].geometry.location.lng();  
                    console.log('Address : '+results[0].formatted_address);


                }else if(status == 'OVER_QUERY_LIMIT') {

                }
                else{

                }
            });  
         }  

    }  
}
4

1 に答える 1

0

ID をミックスに投入します。データを返すだけでなく、idも返して情報の紐付けを行いまくります。

... 編集

オブジェクト配列からリクエストを作成しています。その配列にはIDキーがありますか? その場合、lat と long を返すだけでなく、id も返します。

var id = objArray[i].id
var lat = results[0].geometry.location.lat();
var lon = results[0].geometry.location.lng();

または、使用しているIDキー。

配列(またはのようなオブジェクト)を返す方が良いかもしれません

result[i].lat = results[0].geometry.location.lat();
result[i].lon = results[0].geometry.location.lng();

i が関連付けられているレコードを知っている限り、比較ポイントがあります。

私は認めなければなりません、私はあなたの現在の方法の非同期性(言葉?)が欠けているに違いありません。

于 2013-03-06T11:38:51.857 に答える