cutmail's blog

write the code

携帯の位置情報を取得するときのメモ

最近の携帯にはほとんどGPSや簡易位置情報がついていますね。
これらの情報を利用してのサイトやWebアプリなどもかなり出てきました。

しかし、キャリアによって位置情報の取得方法が若干異なっているのでまとめてみました

au

auにおいての位置情報取得方法は

  • 簡易位置情報(GPS非対応機)
  • GPS

の2種類があります。

簡易位置情報

そんなに精度は高くないですが、ほぼ全てのau端末で利用可です。

取得できるパラメータは以下の通り。







引数名内容
datum測地系
以下の2つの測地系の中から使用している測地系を示す。

unit座標系
以下2つの座標系の中から使用している座標系を示す。

  • degree 度単位
  • dms 度分秒単位 (ただし、秒の小数点以下は10進表記)
lat座標系
以下2つの座標系の中から使用している座標系を示す。

  • 記述例 35.43.25.38
    35:度 -90 (南緯) 〜 90 (北緯)
    43:分 0 〜 59
    25:秒 0 〜 59
    38:秒小数点 2桁(1/100)までを記載
lon経度
座標系に則した表記方法で経度を記述する。符号つきの度で表し、東経を+ (または省略) 西経を−とする。
  • 記述例 135.43.25.38
    135:度 -180 (西経) 〜 180 (東経)
    43:分 0 〜 59
    25:秒 0 〜 59
    38:秒小数点 2桁(1/100)までを記載

[取得方法]

位置情報を取得するには、link先を以下のように指定します。

device:location?url=http://hogehoge.com/index.php

hogehoge.com/index.phpの部分には任意のアドレスを指定します。

具体的には

<a href="device:location?url=http://hogehoge.com/index.php">位置情報を取得</a>

などのように記述します。

そうすると

http://hogehoge.com/index.php?datum=AAA&unit=BBB&lat=XXX&lon=YYY

などのURLが呼び出され、各パラメータの値をGETで取得することができます。

GPS

簡易位置情報に比べ、かなり精度は高いです。

位置情報を取得するには

<a href="device:gpsone?url=[送り先URL]&amp;ver=1&amp;datum=0&amp;unit=0">GPS情報の取得</a>

と記述します。

取得できるパラメータ一覧

引数名 内容
ver GPSのバージョン
datum 測地系 (0:WGS84 , 1:tokyo) au技術情報では、WGS84で統一
unit 経度緯度の表記方法 (0:dd.mm.ss.sssの度分秒表記 , 1:dd.dddの度表記)au技術情報では、度分秒で統一
lat 緯度
lon 経度
alt 高度
time 時間
smaj 長軸半径誤差
smin 短軸半径誤差
vert 高度誤差
majaa 誤差楕円長軸角度
fm 測位方法(何を使用して測位したかを数値で表しています。数値が少ない程、精度が高いようです)

GPSにおいても、GETで位置情報が送られてきます。

<?php

$lat = $_GET['lat']; //緯度
$lon = $_GET['lon']; //経度

echo "緯度: ".$lat;
echo "経度: ".$lon;

?>

Docomo

Docomoにおいての位置情報取得方法は

  • オープンiエリア
  • GPS

の2種類があります。

オープンiエリア

DocomoのCGIにリンク先を設定するタイプ。

[取得方法]
例として、http://hogehoge.com/index.phpに位置情報を送信する場合

<a href="
http://w1m.docomo.ne.jp/cp/iarea?ecode=OPENAREACODE
&msn=OPENAREAKEY&nl=http://hogehoge.com/index.php&arg1=aaa%3dhogehoge&arg2=&posinfo=2">位置情報を取得</a>

というふうに記述します。

送信するときに指定できるパラメータとして以下のものがあります。

引数名 内容
ecode(必須) OPENAREACODE(固定)
msn(必須) OPENAREAKEY(固定)
nl(必須) 位置情報を送信するURL(絶対URL)
posinfo 1の場合は「緯度経度」と「エリアコード」を送信する。
2の場合は「緯度経度」のみ送信。
arg1 送信先に渡したい引数を指定することができる。
[ aaa=hogehoge ]を送りたい場合はURLエンコードして[ arg1=aaa%3dhogehoge ]という形にする。
arg2 arg1と同じ

送信先スクリプトでは、POSTで位置情報を取得します。

取得できるパラメータは以下の通り。

パラメータ 内容
ACTN OKと入る
LAT 緯度座標DMSタイプ ±DD.MM.SS.SSS
LON 経度座標DMSタイプ ±DD.MM.SS.SSS
GEO 測地系 wgs84 もしくは WGS84
XACC 測位レベル1〜3の値。水平誤差が [3]50m以内。[2]50m〜300m。[1]300m以上
AREACODE 基地局エリアコード 5桁数値
POSINFO 送信したposinfoの値と同値
arg1やarg2で指定した引数 上記のように指定すれば[ aaa=hogehoge ]が返る

注意点
UserAgentはわたるがUTN(固体識別番号)は返らない。

GPS

[取得方法]
http://hogehoge.com/index.phpに位置情報を送信する場合、

<a href="http://hogehoge.com/index.php" lcs>位置情報を取得</a>

と記述します。

送信されてきた位置情報は、GETで取得。

送信されるパラメータは以下の通り。

パラメータ 内容
lat 緯度座標DMSタイプ±DD.MM.SS.SSS
lon 経度座標DMSタイプ ±DD.MM.SS.SSS
geo 測地系 wgs84 もしくは WGS84
x-acc 測位レベル1〜3の値。水平誤差が [3]50m以内。[2]50m〜300m。[1]300m以上
alt 高度 +10など

DocomoのGPSによる位置情報は非常に楽に取得できますね。




Softbank,Willcomについては次回以降