2

こんにちは、私はここと同じ問題を抱えています。 Google Maps Geocoder v3 からの住所を返します 。グローバル変数を戻り値に設定する方法がわかりません。

b が undefined を返す瞬間にこれを取得しました

 var a;
 var b;
function outputGeo(result){
    b = result; 
     }


 geocoder.geocode({'latLng': event.latLng},function(results, status) {

         a =  results[1].formatted_address;
         outputGeo(a);
        });  
alert(b);
4

1 に答える 1

0

geocoder.geocodeJSONP リクエストを実行しているため、非同期関数です。つまり、結果が返される前に、そのalert(b)行は既に呼び出されています。alertの後にその行をコールバック関数に入れる必要がありますoutputGeo(a)

Javascript は面白い言語です。JSONP と Javascript の同期について調査するまで、この非同期の問題に悩まされていました。同じことをすることをお勧めします。これについて学ぶ良い方法は、独自の JSONP リクエスト ラッパーを作成することです。(ちょっとした考え。)

于 2012-07-20T14:06:56.297 に答える