Home > PHP > Google Map APIを使って住所から緯度/経度を取得する

Google Map APIを使って住所から緯度/経度を取得する

  • Posted by: zaru
  • 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はデフォルト使用出来ると思ってます)
このコードに何か魔法をかけないといけないのでしょうか?
お手数ですが、このすばらしいコードをもっとすばらしいものに
変えてみたいと思います。

回答のほど、よろしくお願い致します。

なべ Author Profile Page 2010年6月29日 19:13

利用できました。ありがとうございます。

利用できなかった方がいらしたら、下記を参考にしてみてください。
・phpをブラウザで表示させるための基本的なコードを追加する(初めにhtml,bodyいれて、最後にそのタグをとじる)
・phpの開始記号と終了記号を入れる
・保存したphpファイルをUTF-8で保存する
・$addressを利用する前に「$address="東京都千代田区";」などを追加する

以上

Comment Form

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日記

Home > PHP > Google Map APIを使って住所から緯度/経度を取得する

Profile

zaru

Name : zaru

Webプログラマ+Webデザイナで、Webディレクタやってます。Twitterやっているので、ぜひフォローしてやってくださいませ。Twitter - zaru。また、そのほかのプロフィールについては、iddy - zaruを見てください。

Search
Feeds
Others

Return to page top