みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

GoogleMapについて

GoogleMapのジオコーディングを行っています。
下記のコードを記載しているのですが、
検索時にインターネットが重いとpointに値が入らず
入力した住所が見つかりません。のアラートが出てしまいます。

おそらくタイムアウトしているのかな?と思うのですが知っている方いましたらご教授お願いします。
住所自体は存在している住所で、ネットが重くなければ問題なく地図は
表示されます。

geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert("入力した住所が見つかりません。");
}
else {
map.clearOverlays();
map.setCenter(point, 15);
}
}
);

投稿日時 - 2008-09-20 21:40:21

QNo.4344058

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

タイムアウトしているかどうか確かめるには、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で暫く待つ工夫は困難ですが)

参考URL:http://code.google.com/intl/ja/apis/maps/documentation/reference.html

投稿日時 - 2008-10-16 10:52:58

あなたにオススメの質問