• 締切済み

GoogleMapについて

GoogleMapのジオコーディングを行っています。 下記のコードを記載しているのですが、 検索時にインターネットが重いとpointに値が入らず 入力した住所が見つかりません。のアラートが出てしまいます。 おそらくタイムアウトしているのかな?と思うのですが知っている方いましたらご教授お願いします。 住所自体は存在している住所で、ネットが重くなければ問題なく地図は 表示されます。 geocoder.getLatLng( address, function(point) { if (!point) { alert("入力した住所が見つかりません。"); } else { map.clearOverlays(); map.setCenter(point, 15); } } );

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.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

関連するQ&A