0

ポイントは、JSONファイルからマーカーを指摘することですが、現在のjsonの場合、latとlngがない場合は計算する必要がありますが、機能しません。

//For example when
item.county = 'Orust'
//and 
item.region = 'Bohuslän'

何故ですか?

if(lat == null)
            {
                geocoder.geocode({ 'address': item.county+', '+item.region}, function(result, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if(result[0])
                    {
                        latlng = result[0].geometry.location
                    }
                }
                });

私は何かを逃したことがありますか?

4

2 に答える 2

0

ジオコーダーへのリクエストは非同期で実行されます。外部コードからコールバック内に割り当てられたvriableにアクセスすることはできません。実際には可能ですが、未定義になります。

于 2011-07-23T10:02:10.053 に答える
0

最初に、コールバック内で期待どおりに機能しているかどうかを確認します。これを行うには、次のように変更します。

latlng = result[0].geometry.location;

これに:

console.log(result[0].geometry.location);

(割り当てを変更するのではなく、console.log上記の割り当てを追加することもできます。実際には、おそらくそのほうがよいでしょう。)latlng

JavaScript コンソールの結果のメッセージがオブジェクトのように見える場合latlng、問題はスコープの問題である可能性があります。つまり、コールバックの外側はコールバックの内側latlngと同じではありません。latlng

JavaScript コンソールの結果のメッセージがオブジェクトのように見えないlatlng場合、問題はコールバック自体の内部にあります。console.log()上記の最後の場所にこれを配置して、結果が得られているかどうかを確認します。

console.log(result);

これらのconsole.logコマンドが実行されず、JavaScript コンソールに何も表示されない場合geocoder.geocoder()は、 から返されたステータスは無効OKであり、コールバックにエラー処理を追加して何が起こっているかを確認する必要があります。

于 2011-07-22T16:35:10.170 に答える