質問: 日本語住所から、google map APIを用いて、複数のマーカーを地図上に表示させるコードを作っています。 複数の住所は、for文を用いてGeocode処理しています。 また、Geocodeの返り値は非同期処理とのことで、callback関数を使って、すべて住所の緯度経度を取得してから地図を完成させるようにコーディングしています。 実際に当コードを実行してみると、画面上には何の表示もされず(地図は出てこず真っ白)、chromeのデベロッパーツールのconsole上でも何のエラーも表示されません。 コード中にalertを入れて確認してみると、住所の緯度経度自体はきちんと取得できています。 しかし、地図の中心点を指定する変数の部分はundefinedとなっていました。 いろいろ試行錯誤したのですが、どこが間違っているのか、煮詰まって先に進めません。 (callback関数の使い方を含め、いろいろ違っているかと思います。) 何がおかしいのか、ご指摘いただけますでしょうか。 ``` ```
回答: 非同期処理なので、「geocoder.geocode」の「function(results, status) { // 結果」はfor文が**すべて終わってから**呼び出されます。 以下の様にforの変数「i」をfunctionの名前空間で保存するようにして、cRef変数でアドレスがすべてGeocode処理されたのを確認して callback を呼び出すようにすると動作します。 ``` ```