Google Geocoding API を PHP から使ってみる修行
Google が提供しているジオコーディングのための仕組みとしては、「Google Geocoding API」と「Google Maps JavaScript API の Geocoder」がある。JavaScript を使って動的にジオコーディングするには後者を使う。単なる WEB API としては前者がある。これを PHP から使ってみたのが次のコード。XML か JSON で返してくれるけれど、今回は XML を返してもらって simplexml_load_file() 関数を使ってパースしてみた。
<?php $zoom = 16; $address = 'スカイツリー'; $req = 'http://maps.google.com/maps/api/geocode/xml'; $req .= '?address='.urlencode($address); $req .= '&sensor=false'; $xml = simplexml_load_file($req) or die('XML parsing error'); if ($xml->status == 'OK') { $location = $xml->result->geometry->location; $lat = $location->lat; $lng = $location->lng; } ?> <html> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=\ false"></script> <script type="text/javascript"> function init() { var mapdiv = document.getElementById('map_canvas'); var lat_input = document.getElementById('lat_input'); var lng_input = document.getElementById('lng_input'); var lat = <?php echo $lat;?>; var lng = <?php echo $lng;?>; var zoom = <?php echo $zoom;?>; var latlng = new google.maps.LatLng(lat, lng); var myOptions = { zoom: zoom, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(mapdiv, myOptions); var center = new google.maps.Marker({ position: latlng, map: map, title: "ここ" }); google.maps.event.addListener(map, 'click', function(event) { var location = event.latLng; var lat = location.lat(); var lng = location.lng(); lat_input.value = lat; lng_input.value = lng; }); } </script> </head> <body onload="init()"> <div> <ul> <li>lat:<input id="lat_input" value="" /></li> <li>lng:<input id="lng_input" value="" /></li> </ul> </div> <div id="map_canvas" style="width: 400px; height: 300px;"></div> </body> </html>