0

以下の関数に問題があります。

function geo(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            return results[0].geometry.location;
        }
    });
}

それは私に「未定義」を返します。どんな助けでも承認されるでしょう。どうもありがとう!

4

2 に答える 2

0

実際、ジオコーディングコードは正しいです。問題は、「geocoder.geocode」が非同期であり、ジオコーディングの結果がフェッチされる前に、geo関数が実行を終了することです。概念実証として、これを試してください。

function geo(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            alert(results[0].geometry.location); //should have valid info
            return results[0].geometry.location;                    
        }
    });

    alert("I bet you were not expecting this alert to go first");                
}

したがって、2つのオプションがあります。geo関数内でジオコーディングの場所を処理するか、場所を処理する関数でコールバックを提供します。

この例であなたのフィドルを更新しました。こちらで確認してください

于 2012-10-11T03:07:06.367 に答える
0

わかりました、ありがとう。

他の解決策を見つけました-results[0].geometry.locationからcookieに値を保存し、必要な場所で使用することをお勧めします。とにかくありがとう!

于 2012-10-11T18:56:05.760 に答える