• 小
  • 中
  • 大

リバースジオコーディング

リバースジオコーディングとは、地理座標を住所に変換する処理のことをいいます。
参照先は:Googleコード>ReverseGeocoding
Geocoder は動的な逆ジオコーディングをサポートしています。addressの代わりにコンマで区切られた緯度/経度のペアをlatLngパラメータに設定します。

注: 逆ジオコーディングは科学的技術に基づいていません。ジオコーダは許容範囲内にもっとも近い住所があるか探すように試みます。

//ジオコードオブジェクト
var geocoder = new google.maps.Geocoder();
geocoder.geocode(
{
'latLng': '緯度,経度'
},
function(results, status){
if(status==google.maps.GeocoderStatus.OK){
//処理
}
}
);

リクエストが完了すると、callback関数に結果(GeocoderResultオブジェクト)とステータス(GeocoderStatusクラス)が渡されます。 有効なジオコードが取得できたかどうかは、GeocoderStatusが「OK」になっているかどうかで判定できます。


リクエストが完了すると、callback関数に結果(GeocoderResultオブジェクト)とステータス(GeocoderStatusクラス)が渡されます。 有効なジオコードが取得できたかどうかは、GeocoderStatusが「OK」になっているかどうかで判定できます。

ステータス コード
geocode() への呼び出しの完了時に、Geocoder によって返されるステータス。

定数説明
ERRORGoogle サーバーへの接続に問題が発生しました。
INVALID_REQUESTGeocoderRequestは無効でした。一般的に、クエリ(address または latLng)が不足していることを示します。
OKレスポンスには有効な GeocoderResponse が含まれています。ジオコードが成功したことを示します。
OVER_QUERY_LIMITウェブページは、短期間にリクエストの制限回数を超えました。リクエストが割り当て量を超えていることを示します。
REQUEST_DENIEDウェブページではジオコーダを使用できません。何らかの理由でリクエストが拒否されたことを示します。
UNKNOWN_ERRORサーバー エラーのため、ジオコーディング リクエストを処理できませんでした。もう一度試すと正常に処理される可能性があります。
ZERO_RESULTSGeocoderRequestに対する結果が見つかりませんでした。ジオコードは成功しましたが、結果が返されなかったことを示します。遠隔地にある存在しない address または latng がジオコードに渡されると、このような状態になることがあります。


サンプルコード


サンプル.js


var geocoder;
var map;
var infowindow = new google.maps.InfoWindow();
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(35.658704,139.745408);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById
("map_canvas"), myOptions);
}
function codeLatLng() {
var input = document.getElementById("latlng").value;
var latlngStr = input.split(",",2);
var lat = latlngStr[0];
var lng = latlngStr[1];
var latlng = new google.maps.LatLng(lat,lng);
if (geocoder) {
geocoder.geocode({'latLng': latlng},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}

サンプル.html
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps v3 JavaScript API サンプル</title>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="サンプル.js" type="text/javascript"></script>
</head>
<body onload="initialize()">
<p>Google Maps v3 APIを使ったサンプル。</p>
<div id="map_canvas" style="width:500px; height:300px"></div>
<input id="latlng" type="textbox"
value="35.658704,139.745408">
<input type="button" value="Reverse Geocode"
onclick="codeLatLng()">
</body>
</html>


表示例 リバースジオコーディング 座標から住所を取得


Google Maps サンプル > リバースジオコーディング