- 締切済み
GoogleMapについて
GoogleMapのジオコーディングを行っています。 下記のコードを記載しているのですが、 検索時にインターネットが重いとpointに値が入らず 入力した住所が見つかりません。のアラートが出てしまいます。 おそらくタイムアウトしているのかな?と思うのですが知っている方いましたらご教授お願いします。 住所自体は存在している住所で、ネットが重くなければ問題なく地図は 表示されます。 geocoder.getLatLng( address, function(point) { if (!point) { alert("入力した住所が見つかりません。"); } else { map.clearOverlays(); map.setCenter(point, 15); } } );
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
タイムアウトしているかどうか確かめるには、getLatLngメソッドでなく、 getLocationsメソッドを使ってレスポンスをjsonでもらい、statusコード でハンドリング出来ます。 下記のようにして、何のステータスが戻っているか確かめてみては。 geocoder.getLocations(address,function(response){ if (response.Status.code == 200){ point = new GLatLng(response.Placemark[0].Point.coordinates[1], response.Placemark[0].Point.coordinates[0]); map.clearOverlays(); map.setCenter(point, 15); }else{ if (response.Status.code != 620){ alert("入力した住所が見つかりません status=" + response.Status.code); }else{ alert("タイムアウトかも暫く待って下さい status=" + response.Status.code); } } }); 正常にジオコーディング出来ていればステータスに200がセットされます。 コードの一覧は参照URL にあります。 また、連続して、大量にジオコーディング要求するとステータスが620が戻され、処理されません。従って、620が返されたときは、暫く待つ必要があります。 (javascriptで暫く待つ工夫は困難ですが)