ケータイで取得した位置情報をGoogleMap形式に変換するサンプル
    このエントリをはてなブックマークに登録

ケータイで位置情報(緯度・経度)を取得すると、度分秒表記(xx時xx分xx秒形式)で座標が返ってくるケースがほとんどです。
しかし、GoogleMapなどの地図サービスはミリ秒表記(xxx.xxxxxx形式)を使っていることが多いので、変換が必要になります。

今回は座標をGoogleMapで使えることを目的として、度分秒形式からミリ秒形式へ変換するPHPのサンプルをご紹介します。

 

ケータイ(度分秒形式)→GoogleMap(ミリ秒形式)への変換サンプル

// GPSで取得した座標の例
$ido = '+43.3.14.112';
$keido = '+141.22.35.364';

// 度分秒形式からGoogleMapに対応したミリ秒形式に変換する
list($g_ido, $g_keido) = convertLocationForGMap($ido, $keido);

echo '緯度=' . $g_ido . '<br>';
echo '経度=' . $g_keido . '<br>';

/**
 * 緯度・経度変換メソッド
 * 緯度・経度を度分秒形式からミリ秒形式に変換する
 * @param	string	$ido	緯度(度分秒形式)
 * @param	string	$keido	経度(度分秒形式)
 * @return	array		array([変換後の緯度], [変換後の経度])
 */
function convertLocationForGMap($ido, $keido) {
	// 度分秒形式からGoogleMapに対応した形式に変換する
	$keido_arr = explode('.', $keido);
	$ido_arr = explode('.', $ido);
	$g_keido = trim($keido_arr[0]) + trim($keido_arr[1]) / 60
	 + (trim($keido_arr[2]) + trim($keido_arr[3]) / 1000) / 3600;
	$g_ido = trim($ido_arr[0]) + trim($ido_arr[1]) / 60
	 + (trim($ido_arr[2]) + trim($ido_arr[3]) / 1000) / 3600;

	return array($g_ido, $g_keido);
}

trimをかけているのは、端末やサービスの違いによっては、座標の間にスペースが入ることがあるためです。

なお、利用するキャリアやサービスによっては、取得する座標が日本測地系で取れてしまうことがあります。

GoogleMapは世界測地系ですので、座標データが日本測地系の場合は変換が必要になります。
このあたりの説明と変換サンプルは、また後日ご紹介したいと思います。

※追記
日本測地系→世界測地系の記事を作成しました。こちらです。

 

関連:


 

最近の記事







2 Responses to “ケータイで取得した位置情報をGoogleMap形式に変換するサンプル”

  1. その変換式はここがたぶんオリジナル
    http://jsgt.org/ajax/newmon/GoogleMapsAPIv2.htm#GLatLng_tky

  2. すみません。書くページ間違えました

コメントを書く