HTML5の位置情報(Geolocation)を使ってみた

By fukuda - 12/11/16 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

こんにちは、福田です。
今回はHTML5の新機能である位置情報(Geolocation)を使ってみます。
方法としては、jQueryを使ってGeolocationAPIから取得します。

Geolocationで現在の緯度、経度を取得

$(function(){
    if (!navigator.geolocation){
        alert("Geolocationが使用できません");
    }

    var option = {
        timeout : 10000
    }

    navigator.geolocation.watchPosition(successCallback, errorCallback, option);

    function successCallback(position){
        alert("緯度:" + position.coords.latitude);
        alert("経度:" + position.coords.longitude);
    }

    function errorCallback(error){
        alert("エラー:" + error.code);
    }
});

かなりお手軽です。上記ではlatitude(緯度)とlongitude(緯度)を取得していますが、他にもaltitude(高度)、heading(方角)などが取得できます。その他のプロパティやオプションについては、こちらのサイトが詳しく解説されています。
■Geolocation API-HTML5のAPI、および、関連仕様
http://www.htmq.com/geolocation/

精度について

GeolocationAPIはwifi基地局やIPアドレスからも取得を試みているので、GPSがない環境でも取得することができますが、環境によっては失敗したり、数km誤差が出るようです。今回の非GPS環境(wifi)では正確に取得することができました。

おまけ

現在地を元に、地球の裏側の地図を表示してみました。
さらに方角を取得し、加速度センサーと組み合わせれば「スマホを向けた先の地球の裏側を表示」といったことができるので、もう少しだけ面白くなりそうです。(Geolocationによる方角の取得は移動中でなければならないため、断念しました。。)
地球の裏側デモ

最後に

ブラウザの対応状況は2012年11月14日現在、以下のようになっています。
IE 9~/FireFox 3.5~/Safari 5~/Google Chrome 5~/Opera 10~

動作確認は、iPodtouch(4世代)iOS6 safari のwifi環境で行いました。