簡易位置取得法についてはKDDIのサイトに書いてあるが、 正確な値を取得するためには、 GPS携帯的メモや gpsOneで位置情報表示 に書いてあるように、以下のような引数でCGIを起動すると正確な値を取得することができる。 "device:gpsone" と指定するところがポイントである。
<form action="device:gpsone" method="GET"> <input type="hidden" name="url" value="http://pitecan.com/Location/gps.cgi"> <input type="hidden" name="ver" value="1"> <input type="hidden" name="datum" value="1"> <input type="hidden" name="unit" value="1"> <input type="hidden" name="acry" value="0"> <input type="hidden" name="number" value="0"> <input type="submit"> </form>CGI呼び出しの結果の環境変数については モバイルCGI研究のページに書いてある。 端末固有のサブスクリプションIDなどはこれで取得できる。 以下のようなCGI を動かすことで時刻と位置情報がdataファイルに格納されていく。
#!/usr/bin/env ruby require 'cgi' cgi = CGI.new('html3') subno = ENV['HTTP_X_UP_SUBNO'] # Subscription ID (端末にユニークなID) lat = cgi.params['lat'] lon = cgi.params['lon'] loc = "N#{lat}E#{lon}" time = Time.now.strftime("%Y/%m/%d %H:%M:%S") File.open("data","a"){ |f| f.puts "#{time} #{subno} #{loc}" } s = <<EOF <wml:card ontimer="device:gpsone?url=gps.cgi&ver=1&datum=1&unit=0&acry=0&number=0"> <wml:timer value="600" /> <p align="center"> GPS位置計測! (1分ごと) </p> #{loc} </wml:card> EOF cgi.out { cgi.html { cgi.head { } + s } }格納されるデータファイル:
2005/04/13 16:03:09 05000123456789_ae.ezweb.ne.jp N+35.43.23.81E+139.45.02.09 2005/04/13 16:05:06 05000123456789_ae.ezweb.ne.jp N+35.44.02.24E+139.44.50.03 2005/04/13 16:07:37 05000123456789_ae.ezweb.ne.jp N+35.44.09.19E+139.44.46.66 2005/04/13 16:09:33 05000123456789_ae.ezweb.ne.jp N+35.43.37.32E+139.44.52.80 ...自分の位置を常にどこかに通知しておけばいろいろ便利なことも多いのだが、