PHP+GPSで現在位置情報を取得する
今日はPHPでGPSを扱う練習を〜(もちろん位置情報の取得は携帯でです。)
1から組むのは当然大変そうなので「PEAR::Net_UserAgent_Mobile_GPS」を利用しました。
GPS検索を扱う際、3キャリアでコードが違ってきますがそれを解消してくれるスグレモノです。
ちなみに最新バージョンも0.1.1と開発途中ですが、GPSが絡むサービスはコレを使うのがもう一般的らしいです。
まずはNet_UserAgent_Mobile_GPSのインスコ。
位置情報(緯度経度)の取得だけならこれ以外に入れるものは特にありません。
<?php //まずはライブラリをインクルード。 require_once 'Net/UserAgent/Mobile/GPS.php'; //try-catchで例外にも対応させます。 //ここでよくある例外ってのはモバイル端末以外からアクセスされた時の処理。 //モバイル端末からアクセスしてね!ってな感じのエラー文が表示されます。 try { $g = Net_UserAgent_Mobile_GPS::factory(); } catch (Net_UserAgent_Mobile_GPS_Exception $e) { var_dump($e->getMessage()); exit(); } //取得後の処理を行うページ $url = "http://ddhost.no-ip.info/deltacolors/t.php"; //リンクに表示する文字 $str = 'GPS.TEST'; //各キャリア毎のリンク取得 $glink = $g->getGPSLink($url, $str); print $glink["tag"]; ?>
リンクの生成はこれでOK。
次に、値を取得し処理を行う。
<?php require_once("Net/UserAgent/Mobile/GPS.php"); //小数点以下60進数の値を10進数にへ関する関数 function dmsToDeg($dms){ $dms = array_pad(explode('.',$dms),4,'0'); $deg = $dms[0] + $dms[1]/60 + ($dms[2].'.'.$dms[3])/3600; return round($deg,9); } $res = $g->getGPSResponse(); print dmsToDeg($res['lon']); print dmsToDeg($res['lat']); ?>
これで緯度経度が取得出来た。
後はこの数値を元に都道府県や市区町村を取得する「逆GeocodingAPI」にかければOK。
逆GeocodingAPI参考サイト
座標から地名を取得する逆GeocodingAPIのまとめ + サンプル : アシアルブログ
[お願い]
ただし自分の携帯でしかチェック出来ないので取得結果をコメントで報告してくれたら助かります。
テストページQRコード
URL:
http://ddhost.no-ip.info/deltacolors/t.php
欲しい情報まとめておきます。