ケータイのGPSから住所を取得(逆Geocoding)する方法
Tweet
アシアルさんのブログに、座標から住所を取得する方法やそのAPIをまとめた、「座標から地名を取得する逆GeocodingAPIのまとめ + サンプル」というエントリーが公開されています。
→ アシアルブログ 座標から地名を取得する逆GeocodingAPIのまとめ + サンプル [blog.asial.co.jp]
住所→座標の取得は、GoogleのGeocodingという機能を使って実現できるのですが、その逆はGoogleのAPIには実装されていません。
上記エントリーでは、この逆Geocoding機能が使えるサービスをまとめて紹介しています。
またサンプルプログラムとして、「YahooローカルサーチAPI」を使った場合の例が掲載されています。
同じサンプルでは面白みがないので、その1つ下で紹介されている「ReFITS Lab 逆ジオコーディングサービス」を使って、ケータイのGPS機能から住所を取得するプログラムを作ってみました。
※ドコモのGPS対応ケータイ用のサンプルです。
※下記サービスを利用される際には必ず先に使用条件をご覧ください。
→ ReFITS rgeocode.php – 逆ジオコーディングサービス [refits.cgk.affrc.go.jp]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php
// APIのURL(参照:http://refits.cgk.affrc.go.jp/tsrv/jp/rgeocode.html)
$url = 'http://refits.cgk.affrc.go.jp/tsrv/jp/rgeocode.php?v=3&lat=%%ido%%&lon=%%keido%%';
if (!isset($_GET['lat']) or !isset($_GET['lon'])) {
printf('<a href="%s" lcs>現在地を確認</a><br /><br />', $_SERVER['PHP_SELF']);
} else {
$ido = trim($_GET['lat']);
$keido = trim($_GET['lon']);
// 度分秒形式からGoogleMapに対応した形式に変換する
$keido_arr = explode('.', $keido);
$ido_arr = explode('.', $ido);
$g_keido = $keido_arr[0] + $keido_arr[1] / 60 + $keido_arr[2] / 3600;
$g_ido = $ido_arr[0] + $ido_arr[1] / 60 + $ido_arr[2] / 3600;
// 世界測地系に変換する
$wgs84_keido = $g_keido - $g_ido * 0.000046038 - $g_keido * 0.000083043 + 0.010040;
$wgs84_ido = $g_ido - $g_ido * 0.00010695 + $g_keido * 0.000017464 + 0.0046017;
// 緯度・経度を置換
$url = strtr($url, array('%%keido%%' => $wgs84_keido, '%%ido%%' => $wgs84_ido));
// XMLを取得
$xml_str = file_get_contents($url);
$xml = simplexml_load_string($xml_str);
// 出力
echo '緯度:' . $wgs84_ido . '<br />';
echo '経度:' . $wgs84_keido . '<br />';
echo '都道府県: ' . $xml->result->prefecture->pname . '<br />';
echo '市区町村: ' . $xml->result->municipality->mname . '<br />';
echo '町丁目・字: ' . $xml->result->local->section . '<br />';
echo '番地: ' . $xml->result->local->homenumber . '<br />';
}
?>
</body>
</html>
※ソースコードはUTF-8でお書きください
このように住所が取得できます
引数に緯度・経度を渡してXMLを取得するだけですので簡単ですね。
関連:
- ケータイGPS情報の取得方法がまとめられた記事「【PHP TIPS】 96. 携帯電話でGPSデータを取得してみよう」
- PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」(ウノウラボ)
- ケータイで取得した位置情報をGoogleMap形式に変換するサンプル
最近の記事