住所2緯度経度 google geo api
ちょっとばっかし住所から緯度経度に変換する必要が出たため、プログラムを書いてみました。
Google の Geo APIってものを使ってます。
基本的に住所をGoogleに投げるだけでOKです。
かえってくるXMLをパースするだけなので、初心者でも簡単にできると思います。
んで、プログラム見るとわかると思うんだけどsimplexmlを使用してません。
なんかパースエラーが出るので、しかたなく正規表現で緯度経度部分をゲットしてます。
ちなみに住所は番地まで書いて、それ以上の建物名とかは書かないほうがうまく緯度経度をゲットできます。
○池袋1−2−3
×池袋1−2−3 ほげほげビル2F
<?php //住所2WGPS function address2wgps( $address ){ //クエリ作成 $address = mb_convert_encoding( $address , "UTF-8" , "SJIS" ); $address = urlencode( $address ); //グーグルに緯度経度を問い合わせ(APIキー必須 //参照:http://www.geekpage.jp/web/google-maps-api/signup.php $url = "http://maps.google.co.jp/maps/geo?key={$APIKEY}&q={$address}&output=xml&ie=UTF-8"; $file = file_get_contents( $url ); $file = mb_convert_encoding( $file , "SJIS" , "UTF-8" ); //正規表現(ここもうちょっとなんとかならないのかなぁ preg_match( "/(<coordinates>)[0-9.,]+<\/coordinates>/" , $file , $wgps_a ); //緯度経度に分ける $wgps_a = explode( "," , strip_tags( $wgps_a[0] ) ); //経度 $wgps['lat'] = $wgps_a[0]; //緯度 $wgps['lng'] = $wgps_a[1]; return $wgps; } ?>