以前にも携帯でGPSを扱えるPEARライブラリを紹介しましたが、
「携帯GPS機能が扱えるPEAR::Net_UserAgent_Mobile_GPSを使ってみました」
今回は別のGPSを扱えるライブラリ『Geomobilejp_Converter』を紹介したいと思います。
ウノウラボ – 『PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」を作りました』
PEAR::Net_UserAgent_Mobile_GPSより優れている点は2点あります
・docomoの提供するオープンiエリアの機能を使って座標から地名まで割り出すことが出来きます
・キャリアによって異なる座標の形式を統一してくれます
特にキャリアの座標形式の差を吸収してくれるのはありがたい機能です。
使い方の参考例
フォーマットを変換する
緯度経度を度単位(degree)と度分秒単位(dms)に相互変換することができます。
require_once '/path/to/Geomobilejp/Converter.php'; $converter = new Geomobilejp_Converter('35.21.03.340', '138.34.45.725', 'wgs84'); $converter = $converter->format('degree'); echo $converter->getLatitude() . "\n"; // 35.350928 echo $converter->getLongitude() . "\n"; // 138.579368
測地系を変換する
測地系を世界測地系(WGS84)と日本測地系(Tokyo)と日本測地系2000(JGD2000)に相互変換することができます。
require_once '/path/to/Geomobilejp/Converter.php'; $converter = new Geomobilejp_Converter('35.21.03.340', '138.34.45.725', 'wgs84'); $converter = $converter->convert('tokyo'); echo $converter->getLatitude() . "\n"; // 35.20.51.663 echo $converter->getLongitude() . "\n"; // 138.34.56.905
キャリアの差を吸収
docomo、au、SoftBank、WILLCOMのGPS機能で送信される緯度経度情報は、パラメータ名やフォーマットに違いがあります。User-Agentによる判定を行って、各違いを吸収する必要があります。Geomobilejp_Converterにはこれらの差をパラメータがあるかどうかのみを単純に判定して吸収するGeomobilejp_Mobileが同梱されています。
require_once '/path/to/Geomobilejp/Mobile.php'; $mobile = new Geomobilejp_Mobile(); if ($mobile->hasParameter()) { echo $mobile->getLatitude() . "\n"; // N35.44.33.150 echo $mobile->getLongitude() . "\n"; // E135.22.33.121 echo $mobile->getDatum() . "\n"; // wgs84 }