住所から座標を取得
ジオコーディングとは、住所を地理座標に変換する処理のことをいいます。また、逆の操作(座標を住所にする)を行うこともできます。この処理は「逆ジオコーディング」と呼ばれています。
参考先は:Googleコード>Google Geocoding API
ジオコードオブジェクトを作成し、geocode()methodで、Geocoderにリクエストを送信します。
コンストラクタ | 説明 |
---|
Geocoder() | ジオコード リクエストを Google サーバーに送信する Geocoder の新しいインスタンスを作成します。 |
Geocoder に送信するジオコーディング リクエストの仕様として次のプロパティがあります。
プロパティ | タイプ | 説明 |
---|
address | string | [省略可] 住所。 |
bounds | LatLngBounds | [省略可] サーチ範囲用の LatLngBounds。 |
language | string | [省略可] サーチ結果の優先する言語。 |
location | LatLng | [省略可] サーチ用の LatLng。 |
region | string | [省略可] サーチ用のトップレベルド<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 によって返されるステータス。
定数 | 説明 |
---|
ERROR | Google サーバーへの接続に問題が発生しました。 |
INVALID_REQUEST | GeocoderRequestは無効でした。一般的に、クエリ(address または latLng)が不足していることを示します。 |
OK | レスポンスには有効な GeocoderResponse が含まれています。ジオコードが成功したことを示します。 |
OVER_QUERY_LIMIT | ウェブページは、短期間にリクエストの制限回数を超えました。リクエストが割り当て量を超えていることを示します。 |
REQUEST_DENIED | ウェブページではジオコーダを使用できません。何らかの理由でリクエストが拒否されたことを示します。 |
UNKNOWN_ERROR | サーバー エラーのため、ジオコーディング リクエストを処理できませんでした。もう一度試すと正常に処理される可能性があります。 |
ZERO_RESULTS | GeocoderRequestに対する結果が見つかりませんでした。ジオコードは成功しましたが、結果が返されなかったことを示します。遠隔地にある存在しない 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 サンプル >
住所から座標を取得