Google Geocoding API を PHP から使ってみる修行

Google が提供しているジオコーディングのための仕組みとしては、「Google Geocoding API」と「Google Maps JavaScript API の Geocoder」がある。JavaScript を使って動的にジオコーディングするには後者を使う。単なる WEB API としては前者がある。これを PHP から使ってみたのが次のコード。XMLJSON で返してくれるけれど、今回は 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>