- 2008/02/01
- PHP
Google Mapでマイマップを作って公開できるようになったり、またまたGoogle Mapが人気になってきたので少し使ってみました。今回は、住所リストはあるけど緯度/経度が分からない…。という時のためのメモ。
今回は、PHP5のSimpleXML関数を使ってGoogle Map APIから返されるXMLをパースして処理してみます。
SimpleXML関数を使って取得するソース
<?php
function getLatLng($address){
$api_key = 'API KEY';
$api_uri = 'http://maps.google.com/maps/geo?key=' . $api_key . '&output=xml&ie=UTF8&q=';
//simpleXMLで読み込む
$xml = simplexml_load_file($api_uri . urlencode($address));
foreach($xml->Response as $res){
$code = $res->Status->code;
//正常に返された場合
if($code == '200'){
$coordinates = $res->Placemark->Point->coordinates;
}else{
$coordinates = FALSE;
}
}
return $coordinates;
}
if($coordinates = getLatLng($address)){
list($lng,$lat) = explode(',',getLatLng($address));
print <<<EOM
<ul>
<li>緯度:{$lat}</li>
<li>経度:{$lng}</li>
</ul>
EOM;
}
PHP5は本当に便利になりました。PHP4だとXMLを扱うのにはライブラリを読み込んだり、自前でパース処理をしたりしなくてはならなかったけど、(ほぼ)標準でXMLをサポートしてくれています。
使っている関数は simplexml_load_file のみです。マニュアルによるとPHP5.0.xの場合、引数のURIをエスケープしてくれないので、あらかじめurlencodeしてやる必要があります。PHP5.0.1以降は自動で処理してくれます。