PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」を作りました
Tweet
中村です。
PHPで携帯の位置情報を簡単に取り扱うことができるライブラリ「Geomobilejp_Converter」を作りました。もう半年近く前に作ったものですが、コードを少し整えたので公開することにしました。
GPSに対応した携帯では、各キャリアで指定されている特定のHTMLを記述することで、携帯サイトに位置情報(緯度経度や測地系)を送信することができます。この位置情報を利用すると、「位置情報付きで掲示板に書き込む」などの機能を実装することができます。
キャリアによっては位置情報のなかに土地名を含むものもありますが、通常は緯度経度だけでは土地名がわかりません。そこでGeomobilejp_Converterでは、docomoの提供するオープンiエリアのiエリアデータファイルを利用して土地名を関連付ける機能を実装しています。iエリアデータを利用することで、各キャリアで共通したiエリアコードや土地名を取得することができます。
使い方を少しご紹介
フォーマットや測地系の変換は次のような感じです。
require_once '/path/to/Geomobilejp/Converter.php';
$converter = new Geomobilejp_Converter('34.700695', '135.495243', 'wgs84');
$converter = $converter->convert('tokyo')->format('dms');
echo $converter->getLatitude() . "\n"; // 34.41.50.830
echo $converter->getLongitude() . "\n"; // 135.29.53.007
また、各キャリアの携帯から送られてきた位置情報をiエリアデータの土地名に変換することができます。ここでは、http://example.com/?lat=%2B34.42.02.502&lon=%2B135.29.42.875&geo=wgs84というリクエストがきた場合を仮定しています。
require_once '/path/to/Geomobilejp/Converter.php';
require_once '/path/to/Geomobilejp/IArea.php';
require_once '/path/to/Geomobilejp/Mobile.php';
$mobile = new Geomobilejp_Mobile();
if ($mobile->hasParameter()) {
$converter = new Geomobilejp_Converter(
$mobile->getLatitude(),
$mobile->getLongitude(),
$mobile->getDatum()
);
$area = Geomobilejp_IArea::seekArea($converter);
echo $area->getIAreaCode() . "\n"; // 17202
echo $area->getName() . "\n"; // 大阪駅/阪急梅田駅周辺
}
ご興味のある方は
Google Codeでソースコードを公開しました。この中に含まれる「docs/Manual.html」により詳しい説明を書いていますので参考にしてください。
参考ソース
このライブラリを作るにあたって、Perlで書かれたGeo::Coordinates::ConverterとGeo::Coordinates::Converter::iArea、またperezvonさんのコードを大変参考にしました。ありがとうございます。
また、私の個人ブログに簡単なGPSのまとめを書いていますので、ご興味があればどうぞ。

コメント
位置情報取得のライブラリーありがとうございます。
私が作ったサービスで使用させて頂きました。
自分の位置を相手へメールで送信できるサービスです。
投稿者: mk18 | 2009年3月15日 19:23
[35.0.0.0]のような、小数点以下が、0の場合、不具合があるようです。
format.php:51で「Can't detect the format.」
になります。
今後、メンテナンスされる予定はございますか?
投稿者: rico | 2010年4月 2日 13:59
> ricoさん
フィードバックありがとうございます。
問題が確認できましたら修正させていただきます。
投稿者: 中村 | 2010年4月 2日 14:07
> ricoさん
テストケースを追加して修正させていただきました。
ご報告ありがとうございました。
最新のアーカイブは下記より取得できます。
http://code.google.com/p/phpgeomobilejp/downloads/list
投稿者: 中村 | 2010年4月 7日 14:37
ライブラリの提供ありがとうございます。
現在、携帯の位置情報を利用したゲームを開発中で、まさにこの機能が必要でした。
ありがとうございます。
投稿者: machiyo321 | 2010年6月 5日 21:59