auのGPS機能を利用する方法と、GPSの起動方法については前回の
au携帯のGPS機能で地図を表示させるプログラム
を参考にしていただければ、だいたいの流れは分かったとは思いますが、
今回は最終回「auのGPSから緯度や経度を取得するプログラム例」を書きたいと思います。
前回の記事で、
GPSを起動させるには、
というような記述をすればよいということはふれました。<a href="device:gpsone?url=test.php&ver=1&datum=1&unit=0&acry=0&number=0">位置情報取得</a>
ここで、上記の「url=test.php」という部分は、GPSにより得られた結果を処理するプログラムを指すわけですが、実際のところ、プログラムの肝となるのは、MapFanのような携帯地図表示サービス(要登録)が提供している仕様に合わせて、結果をカスタマイズすれば良いのです。
今回は、このMapFanが提供しているサービスを例に、そのプログラム(といっても数行ですが…)を紹介したいと思います。
まず、MapFanが提供しているサービスとは、
予め登録した携帯サイトにMapFanが提供するAPIを組み込むことで、
誰でも簡単に携帯GPSを使った地図表示サービスの提供が可能となり、
例えば、自社周辺の地図を提供したり、今回のようなプログラムを使用することで、現在地を提供したりすることが無料でできるようになります。
一方、MapFan(インクリメントP社)は、地図サービスを無料で提供する一方で、地図を表示するのは1回に限ったりと制限を加えることで、オリジナル版と差別化を図ることでMapFanへの登録を促したり、サービスをより広く告知する意味でもAPIを公開することがプラスになるわけです。
だいぶ本題からはずれましたが、
このサービスを利用するには登録が必要ですので、登録しなければ得られない情報は「***」で伏せてありますので、予めご了承ください。
スクリプト例
test.php
といった感じです。<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Cache-Control" content="no-cache">
<title> [周辺地図検索]</title>
</head>
<body bgcolor="#fffcee">
<a name="top"></a>
<center><font color="orange">[周辺地図検索]</font></center>
<center>
<form method="get" action="http://****************.cgi">
<input type="hidden" name="***" value="http://">
<input type="hidden" name="***" value="戻る">
<input type="hidden" name="***" value="11">
<?
chop($lat);
chop($lon);
$lat_s = explode("+", $lat);
$lon_s = explode("+", $lon);
echo "<input type=hidden name=*** value=E$lon_s[1]N$lat_s[1]>";
?>
<input type="submit" value="現在地表示">
</form>
<br><font size="-2">powered by MapFan</font></center><br>
<hr size="1" color="orange" width="90%">
<font color="red">[ご注意]</font><br>地図の表示は1枚に限ります。2頁目以降はMapFanへの登録が必要です。
<hr color="blue" size="1">
<a href="/">トップへ戻る</a>
<hr color="blue" size="1">
</body>
</html>
上記例はPHPを使ったスクリプトですので、CGIなどの言語にも応用可能なはずです。
ここで重要となるは、
の<form>タグで書かれた部分ですが、<form method="get" action="http://****************.cgi">
<input type="hidden" name="***" value="http://">
<input type="hidden" name="***" value="戻る">
<input type="hidden" name="***" value="11">
<?
chop($lat);
chop($lon);
$lat_s = explode("+", $lat);
$lon_s = explode("+", $lon);
echo "<input type=hidden name=*** value=E$lon_s[1]N$lat_s[1]>";
?>
<input type="submit" value="現在地表示">
</form>
まず、わざわざMapFanのサービスにformタグを用いて情報を渡す必要があるのは、MapFanの仕様では、経度や緯度などの情報はURLエンコードされてなければならない理由があるためです。
「http://****************.cgi」は、MapFanからいただける技術情報に記載のURLで、これが経度や緯度といった情報を渡す地図プログラムです。
さらに、hiddenの隠しパラメータで戻りURLを指定したり、そのアンカーテキストなどを指定することができます。それが2〜4行に書かれているものです。
そのほか、phpの部分である
は、auのGPSが返す戻り値を参考に、MapFanの仕様に合わせるだけです。<?
chop($lat);
chop($lon);
$lat_s = explode("+", $lat);
$lon_s = explode("+", $lon);
echo "<input type=hidden name=*** value=E$lon_s[1]N$lat_s[1]>";
?>
上記例は、MapFanの地図サービスの中で、「経度・緯度」による地図表示を使用していますので、それ以外にも、駅名検索や電話番号検索などのサービスもこの応用で使えます。
ごらんの通り、「経度・緯度」による地図表示は現在地を上手く表示するためには、それなりの精度が求められます。これはau携帯のGPSが取得する情報に大きく依存することになりますので、
auのGPS起動時のパラメータを上手く設定してあげる必要がありますが、
これは前回の記事に詳しく書いてありますので参考にしてください。
まず、GPSで場所を特定して、地図に表示させるには、
以下のような手順を踏む必要があります。
実際には、以下のようなサービスを最終的に作るまでの流れです。1. au携帯のGPSをホームページから呼び出す。
2. 携帯に場所(緯度・経度)を取得させる。
3. 取得した緯度と経度を変換して、地図表示プログラムへ渡す。
4. 地図の表示
■GPSによる現在地表示サービス例
(キャッシング@消費者金融ナビ-周辺地図検索)
http://cash.mobile1st.net/ie/map/
(auのみアクセス可能)
QRコード

今回は1と2について説明します。
au携帯にあらかじめ搭載されているGPSを呼び出す(起動させる)コマンドは非常に簡単で、
GPS搭載機種の場合、
でできます。(参考:auのGPSケータイで位置情報を表示させよう)<a href="device:gpsone?url=(プログラムのURL)">位置情報取得</a>
一方、GPSが搭載されていない機種の場合、
とすることで、緯度や経度を取得できます。<a href="device:location?url=(プログラムのURL)">〜</a>
なお、プログラムには引数(ひきすう)として、検索時のオプションを以下のように指定することができます。
などがあるそうです。(参考:GPS携帯的メモ)■指定できる引数一覧
ver 通信バージョン
datum 測地系
unit 座標系
acry 位置情報精度
number 要求測位回数
一方GPSが起動して取得できるパラメータは、
■戻り値
time 測位時刻
fm 測位モード
datum 測地系
unit 座標系
lat 緯度
lon 経度
smin 最小誤差
smaj 最大誤差
majaa 誤差角度
alt GPS高度
vert 高度誤差
これらを引数として記述する方法は、
とします。&引数=値
この引数を記述しない場合や、上記のGPSが搭載されていない機種では、現在地に最も近い通信基地局の場所が取得されるため、地図上で表示されるのは実際の場所とは異なり、精度の低い結果が出ます。例:test.php&ver=1&....
より精度のよい結果を得るためには、経験的な調整が必要ですが、
概ねこちらがテストした環境では以下のような引数と値を指定してあげると、精度の高い結果が得られましたので、参考にしてください。
次回は、GPSから得られた結果から緯度と経度を変換・処理するプログラムをご紹介します。<a href="device:gpsone?url=test.php&ver=1&datum=1&unit=0&acry=0&number=0">位置情報取得</a>
携帯電話のGPS機能を使って、今いる場所を携帯上に表示させる
地図サービスを提供できたらいいのに。
そんなニーズに対応するサービスがあるのをご存じですか?
それは、MapFanの携帯地図リンクサービス(の中の経度緯度取得)
と、携帯電話のGPSで緯度と経度を取得し、これをこのサービスに渡すプログラムを組み合わせる方法です。
携帯SEOとは、PCサイトと同じで、GoogleやYahooなどの
検索順位を上げるためにページを最適化する方法です。
PCサイトのSEOについて書かれたページは膨大な数がありますが、
イマイチ携帯SEOについて解説したページってないですよね。
あったとしても、何か信憑性にかけるというか…
たぶん分かっている人がすごい少ないんだと思います。
オープンページの検索エンジンとして、
auがGoogleを導入して、ドコモは多種の検索エンジンを、ソフトバンクはYahooを取り入れて、ますます携帯SEOが注目されてきていますが、本当のところ携帯SEOはどうすればいいんでしょうか?
ちょっと話題を変えましょう。
携帯電話はみなさんどのくらいで機種変更されるんでしょう。
僕の場合は約1年。
これを友人に言うと、だいたい
早すぎるよ!
って突っ込まれます。
いいじゃない。携帯好きなんだから。
ページ容量の目安となるサイズについての情報、ドコモ編です。
auとは違って、携帯の機種のキャッシュ容量に関しての情報が掲載されているため、
ドコモの場合は非常に単純明快です。auも見習ってほしいところです。
■参照URLはこちら(5.24参照のこと)
http://www.nttdocomo.co.jp/service/imode/make/content/html/outline/s5.html
見ていただければ分かりますが、やはり携帯の機種によって、
1ページで表示できるページ容量が異なります。
最新のFOMAでは100KBまでならば表示ができ、余裕がありますが、
古い機種まで対応させる必要がある場合は、
5KB以下までに抑なければなりません。
今流通している機種のことを考えると、
mova 505iシリーズも使っている方が多いと思うので、
HTMLファイルとページ内に表示する画像等含め、20KB以下に抑えるのが1つの目安になりそうです。
全機種の対応をする余力があるのであれば、
前回ご紹介させていただいた、携帯振り分け用のスクリプトを導入すれば
対応することは可能です。
全対応が難しいのであれば、
「古い機種では表示されないことがあります」といった
注意書きを設けるとよいでしょう。
携帯の機種ごとのキャッシュサイズ(ページ表示用の一時メモリ)を調べる方法がないか調べてみたところ、以下のスクリプトを発見しました。
Kawa.net XPさんの公開されている[Perl] phone.pl 携帯電話キャリア自動判別ライブラリ
で、どうやらキャッシュサイズを取得できそうです。
こちらで公開されている「phone.pl」をもとに、
自前でごくごく簡単なCGIを作りましたので、
もし、ご自分の機種のキャッシュ容量を知りたければ、
以下にアクセスすれば分かります。
■自分の機種の端末情報(キャッシュ容量など)を知るスクリプト
※2次元バーコードを読み取りできる機種をお持ちの方

(結果で表示された番号等の意味は、配布元をご覧になってください)
※それ以外の方
URL:http://www.dspt.net/cgi-bin/m_hantei/test.cgi
(PCでアクセスしても情報は得られません)
(絵文字はソフトバンク携帯には対応していません)
こちらを参考に、機種とキャッシュ情報のデータベースを構築したいところです。この記事を見てくれた方がお持ちの機種のキャッシュ容量についてコメントをくださると地味に可能かもしれません。(笑)
ちなみに、僕の傷だらけ?のW32Hは131072byte(=約130KB)でした。






