ケータイのGPSから住所を取得(逆Geocoding)する方法
    このエントリをはてなブックマークに登録

アシアルさんのブログに、座標から住所を取得する方法やその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を取得するだけですので簡単ですね。

 

関連:


 

最近の記事







コメントを書く