
Google Maps APIとGoogle Geocoding APIを組み合わせて住所から地図を表示させる
2015/07/24
Google Maps APIは座標指定をしないと地図が表示されないのです。
ですからページ内にGoogleマップを表示したい場合、座標をいちいち調べないといけません。
そんなの面倒くさい!とか、
ユーザーにキーワード入力させて地図を表示させたいとか、
じゃらんなどのAPIから取得した座標が日本測地系だからGoogleマップでズレるとか、
・・・・・
という方のために、Google Maps APIとGoogle Geocoding APIを組み合わせて住所から地図を表示させる方法をご紹介します。
単純にGoogleマップをページ内に表示したい、という時は…
Googleマップページへ行きまして
検索
↓
鎖マークをクリック
↓
「ウェブサイトへの地図埋め込み用 HTML コード」をコピー&ペースト
で、十分かと思います。
今回の方法は、ほかのAPIと連携させて、たくさん地図を表示したいときに使います。
1)PHPコードを入力
まずは、下記PHPコードを書きます。
<?php
$keyAdress = '皇居'; //ここにキーワードもしくは、住所を入れます。
$address = $keyAdress;
$req = 'http://www.geocoding.jp/api/';
$req .= '?q='.urlencode($address);
$xml = simplexml_load_file($req) or die("XMLパースエラー");
$coordinate = $xml->coordinate;
$lat = $coordinate->lat;
$lng = $coordinate->lng;
?>
2)JavaScriptコードを入力
その下に、下記JavaScriptコードを書きます。
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: new google.maps.LatLng(<?php echo $lat; ?>,<?php echo $lng; ?>),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
var onMarkerClick = function() {
var marker = this;
var latLng = marker.getPosition();
infoWindow.setContent('<h3>★★★<?php echo $keyAdress; ?>★★★</h3>');
infoWindow.open(map, marker);
};
google.maps.event.addListener(map, 'click', function() {
infoWindow.close();
});
var marker1 = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(<?php echo $lat; ?>,<?php echo $lng; ?>)
});
google.maps.event.addListener(marker1, 'click', onMarkerClick);
});
</script>
3)HTMLコードを入力
そして、マップを表示させたい位置に下記HTMLコードを書きます。
<div id="map" style="width:100%; height:600px;"></div>
そうすると、「皇居」のキーワードだけで、下記サンプルのような見慣れたマップを表示できます。
「皇居」には、もちろん通常の住所を入れても表示されます。
Google Maps APIとGoogle Geocoding APIを組み合わせサンプル
Google Maps APIとGoogle Geocoding APIは、特にAPIキーも必要ないので、このままコピペで作成できるかと思います!
処理の説明
処理の説明を簡単にします。以下のようになっています。
1)「Google Geocoding API」でキーワードから座標を出力(PHP部分)
2)「Google Maps API」で地図を表示、(JavaScript・HTML部分)
その際に、座標は「Google Geocoding API」で出力したものを使用する。
