Google Maps(グーグルマップ)で場所から住所を検索する方法
今回はグーグルマップの位置から住所を検索する方法となります。
なお、Google Maps関連の記事についてはこちらにまとめてありますので、ご覧ください。
Contents
Google Maps(グーグルマップ)で場所から住所を検索する方法
サンプル
マーカはドラッグ可能となっていますのでマーカーをドラッグさせてみてください。
HTMLコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title>Sample Map</title>
<script defer
src="https://maps.googleapis.com/maps/api/js?key=(APIキー)&callback=initMap&libraries=geometry" >
</script>
<style type="text/css">
#map_canvas {
width: 100%;
height:70%;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
<script type="text/javascript">
var map;
var geo;
var marker;
function initMap() {
var myLatlng = new google.maps.LatLng(35.68517826190777,139.7528236934712);
var mapOptions = {
zoom: 15,
center: myLatlng
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
geo = new google.maps.Geocoder();
marker = new google.maps.Marker({
position: myLatlng,
map: map,
draggable: true
});
marker.addListener('dragend', function(event) {
searchAddress();
});
searchAddress();
}
function searchAddress() {
geo.geocode( { 'location': marker.position}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK) {
setAddresses(results);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
}
);
}
function setAddresses(results) {
var nCount = results.length;
var addressInfo = '';
for ( var i=0; i < nCount; i++ ) {
var result = results[i];
if ( i > 0 ) {
addressInfo = addressInfo + '<br />' + result.formatted_address;
} else {
addressInfo = result.formatted_address;
}
}
document.getElementById('address').innerHTML = addressInfo;
}
</script>
</head>
<body>
<div id="map_canvas"></div>
<br />
<div id="address" ></div>
</body>
</html>
デモ
位置から住所を検索する
geocode
位置から住所を検索する際にも「geocode」メソッドを利用します。
function searchAddress() {
geo.geocode( { 'location': marker.position}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK) {
setAddresses(results);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
}
);
}
geocodeメソッドで「location」プロパティを利用すれば、位置情報から住所を検索できます。
GeocoderResult
検索結果は「GeocoderResult」の配列で返ってきます。
function setAddresses(results) {
var nCount = results.length;
var addressInfo = '';
for ( var i=0; i < nCount; i++ ) {
var result = results[i];
if ( i > 0 ) {
addressInfo = addressInfo + '<br />' + result.formatted_address;
} else {
addressInfo = result.formatted_address;
}
}
document.getElementById('address').innerHTML = addressInfo;
}
「geocode」メソッドの戻り値は「Array<GeocoderResult>」型なのでサンプルでは、配列数分、位置情報を取得しています。
住所情報はどこに格納されているのか?
GeocoderResultの「formatted_address」には、人が識別できるような形で住所が格納されています。
よって、サンプルでは「formatted_address」の内容をDIVエリアに展開するようにしてあります。
ただ、複数住所情報が検索され、どれが一番よいのかわからないのが難点ですかね。ただ、結構詳しく住所が出てくるので、場所がわかれば、ほぼ住所もわかりそうですね。
ご参考
関連ページ