Mapion マピオンラボ Javascript Firefox3.5でも使える!Geolocation APIの実装とその感想
Firefox3.5でも使える!Geolocation APIの実装とその感想
- 2009.07.27
- 大澤 信行
- Javascript
- コメ(0)
- トラバ(0)
![[clip!]](http://parts.blog.livedoor.jp/img/cmn/clip_16_12_b.gif)


こんにちは、マピオンでクライアントサイドの開発を行っている大澤です。
このほどマピオンのサイトをGeolocation API対応しました。
Firefox3.5以上をお使いの方は今すぐ試せます。
今回実際に実装などを行ってみた感想などを書こうと思います。
実装は、簡単だった
簡単でした。
ブラウザの判定なども特に必要なく、ただnavigator.geolocationがあるかどうか見て、あったら処理を続ければいいだけです。
if (navigator.geolocation) {
/* geolocation is available */
} else {
alert("ごめんなさい。あなたの居場所はわかりません。");
}
有線環境と無線LAN環境で精度が違う
有線LANのデスクトップ環境と無線LANのノートPCでは精度が大きく違うということを発見しました。
緯度経度の値で比較すると、有線LANでは小数点以下第三位までに対して、無線LAN環境だと第七位までの詳細なデータを取得できます。
無線LANではMACアドレス、無線LANでない場合はIPで引いているのかもしれません。
マピオン社内で現在地取得をしたら、皇居のど真ん中に飛ばされちゃうことがあるのはこのせいですね。
精度を判別しよう
ここまで差があると同じ縮尺で表示するわけにはいきません。
そういうわけで精度を判定して縮尺を分けることにしました。
幸いにしてGeolocation APIには精度の目安になる値を取得できます。
以下は緯度経度、そして制度をアラート表示するサンプルです。
navigator.geolocation.getCurrentPosition(function(p){
var lat = p.coords.latitude;
var lng = p.coords.longitude;
var accuracy = p.coords.accuracy;
alert("緯度:" + lat + ", 経度:" + lng + ", 精度:" + accuracy);
});
参考: Geolocation API Specification - W3C Working Draft
マピオン社内からでは、
- 有線LAN環境 122000
- 無線LAN環境 150
となり、精度が高いものほど値が低いようです。
今回の実装ではこの値を参考に縮尺を決定しました。
PlaceEngineとの比較した場合のGeolocation APIの強みと弱み
強み
- 常駐クライアントが不要
- 位置情報取得が(PlaceEngineに比べて)速い。
- 無線環境でなくとも使える(精度は悪い)。
弱み
- 現状ではFirefox3.5とiPhone版Safariしか対応していない。
- 日本国内においてはPlaceEngineの方が精度が高い(地方を含め)。
今回非力なLet'sNoteR4で比較のテストを行いましたが、PlaceEngineによる位置情報取得はクライアントソフトを経由するためか、パフォーマンス的に厳しかったです。
今後ネットブックのような非力なモバイル機が普及することを考えると、Geolocation APIの方が有利なように思えます。
まとめ
この手軽さで簡単に現在地を取得できるなんて素晴らしい!
でもまだ活かせるアイデアが不足しているかもしれない。
おまけ
実は本番アップの日が僕の初給料日でした。
失敗したら振り込まれないに違いないと思いつつ、無事成功しましたので、給料は振り込まれたみたいです。よかった!

-
この記事のトラックバックURLhttp://labs.mapion.co.jp/mtos/mt-tb.cgi/14





