• 小
  • 中
  • 大

住所から座標を取得

ジオコーディングとは、住所を地理座標に変換する処理のことをいいます。また、逆の操作(座標を住所にする)を行うこともできます。この処理は「逆ジオコーディング」と呼ばれています。
参考先は:Googleコード>Google Geocoding API
ジオコードオブジェクトを作成し、geocode()methodで、Geocoderにリクエストを送信します。
コンストラクタ説明
Geocoder()ジオコード リクエストを Google サーバーに送信する Geocoder の新しいインスタンスを作成します。

Geocoder に送信するジオコーディング リクエストの仕様として次のプロパティがあります。
プロパティタイプ説明
addressstring[省略可] 住所。
boundsLatLngBounds[省略可] サーチ範囲用の LatLngBounds。
languagestring[省略可] サーチ結果の優先する言語。
locationLatLng[省略可] サーチ用の LatLng。
regionstring[省略可] サーチ用のトップレベルド<Cンの国コード。
addressプロパティには、検索する住所文字列を指定します。 住所に日本語を指定できるようにするには、languageプロパティに「ja」を指定します。 その他、国コード(regionプロパティ)、検索範囲(bounds)などを指定可能です。

Google Geocoding API の使用は、1 日あたり 2,500 件までという位置情報リクエストのクエリ制限の対象となります(Google Maps API Premier をご利用の場合は、1 日あたり 100,000 件までリクエストを実行できます)。

注: Geocoding API は Google マップと組み合わせて使用する場合にのみ使用できます。地図に表示せずにジオコーディングの結果のみを利用することは禁止されています。

//ジオコードオブジェクト
var geocoder = new google.maps.Geocoder();
geocoder.geocode(
{
'address': '住所文字列',
'region': 'jp'
},
function(results, status){
if(status==google.maps.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;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(35.697456,139.702148);
var opts = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map
(document.getElementById("map_canvas"), opts);
}

function codeAddress() {
var address = document.getElementById("address").value;
if (geocoder) {
geocoder.geocode( { 'address': address,'region': 'jp'},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);

var bounds = new google.maps.LatLngBounds();
for (var r in results) {
if (results[r].geometry) {
var latlng = results[r].geometry.location;
bounds.extend(latlng);
new google.maps.Marker({
position: latlng,map: map
});

document.getElementById('id_ido').innerHTML = latlng.lat();
document.getElementById('id_keido').innerHTML = latlng.lng();

}
}
//map.fitBounds(bounds);
}else{
alert("Geocode 取得に失敗しました reason: "
+ 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を使ったサンプル。
ジオコーディング
住所から座標を取得[Geocode]住所 or ランドマーク</p>
<table style="width:500px;border:0;" >
<tr style="background-color:#dddddd;">
<th style="width:120px">項目</th>
<th>情報</th></tr>
<tr><td>緯度</td><td id="id_ido"></td></tr>
<tr><td>経度</td><td id="id_keido"></td></tr>
</table>
<input id="address" type="textbox" value="東京都">
<input type="button" value="ジオコーディン" onclick="codeAddress()">
<div id="map_canvas" style="width:500px; height:300px"></div>
</body>
</html>


表示例 住所やランドマークから座標を取得


Google Maps サンプル > 住所から座標を取得