>> i's SQUARE >> Webサービス構築ガイド >> 携帯の位置情報を取得する

携帯の位置情報を取得する

携帯の位置情報取得機能を利用すれば、プログラムで場所に関する情報を扱うことが可能です。
位置情報を取得するには、 ほとんど全ての携帯に備わっている最寄の基地局の場所を取得する簡易位置情報と 一部の携帯が利用できるGPS(人工衛星を利用して自分が地球上のどこにいるのか正確に割り出す)機能 を利用します。
以下に各キャリア毎の位置情報取得方法を紹介します。



■ドコモ

ドコモの簡易位置情報オープンiエリア を利用します。
以下は簡易位置情報のサンプルです。

▼アンカータグの場合:
<a href="http://w1m.docomo.ne.jp/cp/iarea?ecode=OPENAREACODE&msn=OPENAREAKEY&nl=遷移先URL">
位置情報を取得する</a>

更に
&arg1=aaa%3d123&arg2=bbb%3dxyz
を追加して任意のパラメータを遷移先URLに渡すことも出来ます。

▼フォームタグの場合:
<form method="post" action="http://w1m.docomo.ne.jp/cp/iarea">
<input type="hidden" name="ecode" value="OPENAREACODE">
<input type="hidden" name="msn" value="OPENAREAKEY">
<input type="hidden" name="nl" value="遷移先URL">
<input type="hidden" name="arg1" value="aaa=123">
<input type="hidden" name="arg2" value="bbb=xyz">
<input type="submit" name="ok" value="ok">
</form>
他の任意のパラメータを送りたい場合はarg1やarg2を使用します。
サンプルは遷移先URLに引数aaa=123とbbb=xyzを渡したい例です。
遷移先URLには5桁のAREACODE環境変数がセットされますので、 これを取得して現在地を判断します。

ドコモのGPSによる位置情報は AタグかFORMタグに「1cs」を追加するだけでOKです。
これで遷移先URLに位置情報パラメーターが付加されます。
以下はGPSによる位置情報取得のサンプルです。
▼アンカータグの場合:
<a href="遷移先URL" 1cs>位置情報を取得する</a>

▼フォームタグの場合:
<form method="post" action="遷移先URL" 1cs>
以下のような感じで位置情報以外の任意のパラメータを送ることも可能です。
<input type="radio" name="param1" value="任意の文字列" checked>パラメーター1
</form>
遷移先URLには位置情報パラメーター(pos)がセットされます。
pos=N35.41.33.26E139.01.34.14
N(北)とE(東)それぞれの度分秒を「.」で区切られた値が返ります。
尚、測定レベルが3の場合は現在地の誤差50メートル未満、 2の場合は50メートル以上300メートル未満、 1の場合は300メートル以上の誤差になります。

■ソフトバンク

ソフトバンクの場合は、3GC端末かどうかで位置情報取得方法が異なります。
3GC端末以外の場合は、AタグかFORMタグに「z」を追加するだけでOKです。
これで遷移先URLに位置情報パラメーターが付加されます。
以下は3GC端末以外の場合で位置情報を取得するサンプルです。

▼アンカータグの場合:
<a href="遷移先URL" z>位置情報を取得する</a>

更に遷移先URLに
&test1=aaa&sample1=bbb
等を追加して任意のパラメータを遷移先URLに渡すことも出来ます。

▼フォームタグの場合:
<form method="get" action="遷移先URL" z>
<input type="submit">
</form>
遷移先URLのx-jphone-geocode環境変数に位置情報がセットされて返ります。
このX-JPHONE-GEOCODEは 「latitude 緯度(北緯)」と「longitude 経度(東経)」と「address 住所」 が%1Aで区切られて返ります。
▼北緯、東経、住所を取得するサンプル(Perl):
my($latitude,$longitude,$address) = split(/%1A/,$ENV{'HTTP_X_JPHONE_GEOCODE'});
北緯が7桁の場合は3桁(度)2桁(分)2桁(秒)、 6桁の場合は2桁(度)2桁(分)2桁(秒)のフォーマットになります。
東経は2桁(度)2桁(分)2桁(秒)のフォーマットです。
この度分秒表記を百分率表記(Google Maps 等で良く利用される)に変換するには以下の計算式を使います。
(度×3600000+分×60000+秒×1000)/3600000

次に、3GC端末の場合は、locationを利用します。
▼locationのサンプル:
<a href="location:測位方法?url=遷移先URL&p1=aaa&p2=bbb">位置情報を取得する</a>
「測位方法」は簡易位置情報の場合「cell」、 GPSの場合「gps」、 端末で優先されている測位方法を選択する場合「auto」と記述します。
p1以降は任意のパラメーターで、これ以降は「&」で繋げて必要な数だけ付加していきます。
遷移先URLには位置情報パラメーター(pos、geo、x-acr)がセットされます。
posは「.」で区切られた度分秒表記で北緯はN、東経はE、南緯はS、西経はWを頭につけて表示されます。
geoは測地系でwgs84はWGS84系、tokyoは日本測地系、itrfはITRF系になります。
x-acrは測位精度で1なら誤差300メートル以上、 2なら50メートル以上300メートル未満、 3なら50メートル未満となります。


■KDDI au

以下はauの簡易位置情報を取得するサンプルです。

<a href="device:location?url=遷移先URL">位置情報を取得する</a>
遷移先URLには位置情報パラメーター(lat、lon)がセットされます。
latは緯度(-の場合は南緯、-がついてない場合は北緯)で lonは経度(-の場合は西経、-がついてない場合は東経)で 「.」で区切られ、秒小数点2桁の100分の1までが表示されます。
lat=35.43.22.18&lon=135.42.23.18
以下はauのGPSによる位置情報取得のサンプルです。
<a href="device:gpsone?url=遷移先URL&ver=1&datum=1&unit=0">位置情報を取得する</a>
尚、遷移先URLにセットされる位置情報パラメーターは簡易位置情報と同様です。
lat=35.43.22.18 を百分率表記(Google Maps 等で良く利用される)に変換するには以下の計算式を使います。
( 35*3600000 + 43*60000 + 22*1000 + 18 ) / 3600000



顧客がSEに好かれる方法は、
システム開発には時間と金がかかることを認識し、早めに仕様を完全に確定させることである
SEが顧客に好かれる方法は、
プログラマーに嫌われることである
by プログラマーの格言