- 2008年2月 1日 19:04
- 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以降は自動で処理してくれます。
Comments:2
- ファンキーF 2008年10月16日 13:20
はじめまして、この度データベースを使わずに、
Google Maps APIで住所から緯度・経度をPHPで取得する
方法を探しています。まさにこのコードはこれにヒットしました。
しかし、コピペ&APIキー入力では動きませんでした。
画面はまっさらで何も応答がありません。
(PHP5なのでSimpleXMLはデフォルト使用出来ると思ってます)
このコードに何か魔法をかけないといけないのでしょうか?
お手数ですが、このすばらしいコードをもっとすばらしいものに
変えてみたいと思います。回答のほど、よろしくお願い致します。
-
なべ
2010年6月29日 19:13
利用できました。ありがとうございます。
利用できなかった方がいらしたら、下記を参考にしてみてください。
・phpをブラウザで表示させるための基本的なコードを追加する(初めにhtml,bodyいれて、最後にそのタグをとじる)
・phpの開始記号と終了記号を入れる
・保存したphpファイルをUTF-8で保存する
・$addressを利用する前に「$address="東京都千代田区";」などを追加する以上
Trackbacks:0
- TrackBack URL for this entry
- http://blog.tofu-kun.org/mt-tb.cgi/371
- Listed below are links to weblogs that reference
- Google Map APIを使って住所から緯度/経度を取得する from Webプログラマー+WebデザイナーなZARU日記
