0

Google Geocoding APIを使用して、住所から緯度と経度を取得しようとしています。後で使用するために、変数内に座標を格納したいと思います。非同期呼び出しであることがわかっています。以下のコードでは、関数useCordinatesを使用して、後で使用できるように座標をグローバル変数に割り当てますが、デバッグ時に座標が定義されていません。javascriptを初めて使用します。暗黙のグローバル変数は、定義されています。

myGlobalVar ='Hello world'; 助けてくれてありがとう。

 function codeAddress(address){
  var loc=[];
  geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
     // no need to define it in outer function now
    loc[0]=results[0].geometry.location.lat();
    loc[1]=results[0].geometry.location.lng();

    useCordinates( loc ); 

  } else {
    alert("Geocode was not successful for the following reason: " + status);
  }
});
}

function useCordinates(cordinateArray){
 cordinates= cordinateArray;
  }
functionTestCodeAddress(){
 start = document.getElementById('start').value;
 codeAddress(start);
 //assign the global variable 'cordinates'
 document.getElementById('start').value=cordinates; 
}
4

1 に答える 1

2

問題は変数ではなく、変数にアクセスしようとしたときの問題です。

現在、codeAddress()の呼び出しの直後にTestCodeAddress()内でこれを実行します。現時点では非同期要求がまだ終了していないため、これは早い段階です。

たとえば、次の行を移動できます。

document.getElementById('start').value=cordinates; 

の中へuseCordinates()

于 2012-09-26T02:21:43.710 に答える