« daemontoolsでデーモン管理 | メイン | CSSを書くときに使っているツールの紹介 »

PHPで携帯位置情報を扱うライブラリ「Geomobilejp_Converter」を作りました
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

中村です。

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」により詳しい説明を書いていますので参考にしてください。

phpgeomobilejp - Google Code

参考ソース

このライブラリを作るにあたって、Perlで書かれたGeo::Coordinates::ConverterGeo::Coordinates::Converter::iArea、またperezvonさんのコードを大変参考にしました。ありがとうございます。

また、私の個人ブログに簡単なGPSのまとめを書いていますので、ご興味があればどうぞ。

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/1467

コメント

位置情報取得のライブラリーありがとうございます。

私が作ったサービスで使用させて頂きました。

自分の位置を相手へメールで送信できるサービスです。

[35.0.0.0]のような、小数点以下が、0の場合、不具合があるようです。
format.php:51で「Can't detect the format.」
になります。

今後、メンテナンスされる予定はございますか?

> ricoさん

フィードバックありがとうございます。
問題が確認できましたら修正させていただきます。

> ricoさん

テストケースを追加して修正させていただきました。
ご報告ありがとうございました。

最新のアーカイブは下記より取得できます。
http://code.google.com/p/phpgeomobilejp/downloads/list

ライブラリの提供ありがとうございます。
現在、携帯の位置情報を利用したゲームを開発中で、まさにこの機能が必要でした。
ありがとうございます。

コメントを投稿


画像の中に見える文字を入力してください。

  [PR] 転職
ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

About

2008年8月 1日 21:34に投稿されたエントリーのページです。

ひとつ前の投稿は「daemontoolsでデーモン管理」です。

次の投稿は「CSSを書くときに使っているツールの紹介」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス