1.docomo携帯のGPSの概要
・地図ページを表示する前にGPS測位を行わないといけない
・世界測地系(WGS84)を利用して測位
・取得できる経度/緯度はdms方式(60進法:±ddd.mm.ss.sss)
【dms:lat例】
+38.22.26.898 (北緯38度22分26.898秒)
【dms:lon例】
+126.35.12.268 (東経126度35分12.268秒)
・地図ページのURLにGET/POST方式で任意の変数を送ることができる
2.地図ページへのリンク - GET方式
<a>タグにlcsを付加する。
<a href="/gpsmap.cgi" lcs>現在地表示</a>
※ gpsmap.cgi?name1=value などとして変数を送ることも可
3.地図ページへのリンク - POST方式
<form>タグにlcsを付加する。
<form method="post" action="/gpsmap.cgi" lcs>
<input type="hidden" name="name1" value="value1">
<input type="hidden" name="name2" value="value2">
<input type="submit" value="現在地表示">
</form>
4.地図ページにおいて経度/緯度を取得
PerlCGIなどで引数を受け取る
##フォームの取得
my $query = CGI->new;
*in = $query->Vars();
↓フォームを取得した結果↓
$in{'lat'} ←緯度が格納される(+38.22.26.898)
$in{'lon'} ←経度が格納される(+126.35.12.268)
6.60進数のdms方式を10進数に変換
下記は、$in{'lat'}を60進→10進変換の例
($idoD,$idoM,$idoS1,$idoS2)=split(/\./,$in{'lat'});
$idoM=$idoM/60; #度を60で割る
$idoS=$idoS1.'.'.$gidoS2;
$idoS=$idoS/3600; #秒を60*60で割る
$ido=$idoD+$idoM+$idoS;
6.GoogleMapの画像を呼出し
小数点6桁の緯度/経度に1000000を乗した整数を送る必要がある
GoogleMapでは、WGS84系の測地系が使用されるので注意
【GoogleMapの呼出し例】
http://maps.google.com/mapdata?latitude_e6=26215909&longitude_e6=127667398&zm=300&w=200&h=200&cc=US&min_priority=1&Point=b&Point.latitude_e6=26215909&Point.longitude_e6=127667398&Point.iconid=16&Point=e
【上記URLに送る変数】
latitude_e6 地図の緯度(小数点6桁を整数化したもの)
longitude_e6 地図の経度(小数点6桁を整数化したもの)
Point.latitude_e6 マーカー緯度(小数点6桁を整数化したもの)
Point.longitude_e6 マーカー経度(小数点6桁を整数化したもの)
zm 縮尺
w 地図画像の幅(px)
h 地図画像の高さ(px)
【小数点6桁を整数化する変換式】
$in{'lat'}に、38.32659863261561が格納されている場合
$lat=int($in{'lat'}*1000000);
として38326598の整数値を得る
上記方法は現在利用できなくなりました(2010/10/5)
▼新しい方法はこちら▼
「GoogleMapの固定画像を切り出す新しい方法」
Docomo公式サイトの仕様
http://www.nttdocomo.co.jp/service/imode/make/content/gps/
0 件のコメント:
コメントを投稿