2010年6月13日

JavaScript で iPhone の GPS 位置情報を取得する

navigator.geolocationオブジェクトを利用して、JavaScriptでiPhoneの位置情報を取得することができるようなので、簡単なコードを書いてみました。

<script type="text/javascript">
<!--
function showMap(position) {
    /*位置情報を表示する*/
    var coords = position.coords;
    alert('緯度: ' + coords.latitude + ', 経度: ' + coords.longitude);
}

function handleError(error) {
    /*取得失敗のアラートを表示する*/
    alert('位置情報を取得できません。');
}

function getGeoLocation(){
    if (navigator.geolocation && typeof navigator.geolocation.getCurrentPosition == 'function') {
        /*位置情報を取得可能な場合*/
        navigator.geolocation.getCurrentPosition(showMap,handleError);
    }
    else {
        /*位置情報を取得不可能な場合*/
        handleError();
    }
}
//-->
</script>
<script type="text/javascript"></script>
<a href="javascript:void(0);" onclick="getGeoLocation();">現在置を確認する</a>


現在置を確認する

このサンプルを実行すると、緯度と経度をアラートで表示します。

Mac(Snow Leopard 10.6.3)のSafari(5.0)とFirefox(3.6.3)で試してみたところ、なぜか位置情報を取得できました。取得までに数秒かかりますが、iPhoneよりも正確です。地図で確認したい場合は、Googleマップで十字カーソルの下にある「○」をクリックしてみてください。

iMacにはGPSは付いていなかったと思うので、一体どうやって位置情報を取得しているのでしょう。Wi-Fiを利用しているのでしょうか? いずれにせよ、こうもピッタリと位置を当てられると、ちょっと恐い気もします。

ちなみに、取得したpositionオブジェクトには、次の情報が含まれているようです。

position.coords.latitude緯度
position.coords.longitude経度
position.coords.accuracy精度(単位=m?)
position.coords.altitude高度
position.coords.altitudeAccuracy高度の精度
position.coords.heading方角
position.coords.speed速度
position.timestamp取得時?の日時(ミリ秒)

参照

0 件のコメント: