2011/08/02

定期的に位置情報を取得する

定期的に位置情報を取得するには、Geolocation APIのwatchPositionメソッドを使用します。

watchPosition(
位置情報取得成功Callback関数,
位置情報取得失敗Callback関数(省略可),
位置情報取得オプション(省略可)
);

watchPositionメソッドは、getCurrentPositionと基本的に同じですが、getCurrentPositionが1回だけ位置情報を通知するのに対し、watchPositionは位置が変更される度に通知されるというのが違います。また、戻り値に位置情報の継続取得を中止するためのIDが返却されるのも異なる点です。
各オブジェクト、プロパティ等の意味は「現在位置を取得する」を参照して下さい。








<div id="location2"></div>
<input type="button" onclick="stopWatchPosition();" value="ボタンを押すと位置情報の継続取得を中止します"></input>
<script language="javascript" type="text/javascript">
var stopID;
if (!navigator.geolocation) {
    var l = document.getElementById("location2");
    l.innerHTML = "このブラウザは位置情報をサポートしていません。";
} else {
    stopID = navigator.geolocation.watchPosition(locationGetSuccess2
        , locationGetError2,
        {
            enableHighAccuracy:true,
            maximumAge:0,
            timeout:1000
        });
}
function locationGetSuccess2(position) {
    var l = document.getElementById("location2");
    var now = new Date();
    l.innerHTML = "緯度:" + position.coords.latitude + "<br />"
            + "経度:" + position.coords.longitude + "<br />"
            + "Time:" + now.getHours() + ":" + now.getMinutes() + ":"
            +  now.getSeconds() + "<br />";
}
function locationGetError2(error) {
    var l = document.getElementById("location2");
    switch(error.code) {
        case error.UNKNOWN_ERROR:
            l.innerHTML = "UNKNOWN_ERROR:" + error.message;
            break;
        case error.PERMISSION_DENIED:
            l.innerHTML = "PERMISSION_DENIED:";
            break;
        case error.POSITION_UNAVAILABLE:
            l.innerHTML = "POSITION_UNAVAILABLE:";
            break;
        case error.TIMEOUT:
            l.innerHTML = "TIMEOUT:";
            break;
    }
}
function stopWatchPosition() {
    navigator.geolocation.clearWatch(stopID);
}
</script>


0 件のコメント:

コメントを投稿