お使いのPCやスマートフォンがGPSやWIFI等を利用した位置情報の取得に対応していれば、ブラウザで位置情報を使用することが可能になります。
navigator.geolocation.getCurrentPosition(位置情報取得成功Callback関数
, 位置情報取得失敗Callback関数(省略可)
, 位置情報取得オプション(省略可)
)
位置情報取得オプションには、以下のPositionOptionsオブジェクトを指定できます。
位置情報取得オプション指定PositionOptionsオブジェクト
プロパティ | 内容 |
enableHighAccuracy | 高い精度で位置情報を取得(true/false) |
timeout | タイムアウト時間(ミリ秒) |
maximumAge | 有効期間(ミリ秒) |
位置情報取得成功Callback関数には、Positionオブジェクトが引数として渡され、Javascriptからそれらの情報にアクセスすることができます。
位置情報取得成功Callbackに渡されるPositionオブジェクト
プロパティ | 内容 |
latitude | 緯度 |
longitude | 経度 |
altitude | 高度 |
accuracy | 緯度、経度の誤差 |
altitudeAccuracy | 高度の誤差 |
heading | 方角 |
speed | 速度(m/秒) |
timestamp | タイムスタンプ型の時刻情報 |
位置情報取得失敗Callback関数には、PositionErrorオブジェクトが引数として渡されます。
PositionErrorオブジェクト
プロパティ | 内容 |
code | エラーコード |
message | エラーメッセージ |
エラーコード
エラーコード | 意味 |
UNKNOWN_ERROR(0) | 不明なエラー |
PERMISSION_DENIED(1) | 位置情報の利用が許可されていない |
POSITION_UNAVAILABLE(2) | 位置情報が取得できない |
TIMEOUT(3) | 位置情報取得タイムアウト |
以下は、現在の位置情報を取得して表示する例です。
<div id="location"></div>
<script type="text/javascript">
if (!navigator.geolocation){
window.alert("このブラウザはGeolocation APIを利用できません");
}else{
navigator.geolocation.getCurrentPosition(
getLocationSuccessCallback,
getLocationErrorCallback,
{
enableHighAccuracy:true,
maximumAge:0,
timeout:10000
}
);
}
function getLocationSuccessCallback(position){
var l = document.getElementById("location")
l.innerHTML = "緯度:" + position.coords.latitude + "<br />"
+ "経度:" + position.coords.longitude + "<br />";
}
function getLocationErrorCallback(error){
var message = "";
switch(error.code)
{
case error.TIMEOUT:
message = "タイムアウトが発生しました";
break;
case error.POSITION_UNAVAILABLE:
message = "位置情報が利用できませんでした";
break;
case error.PERMISSION_DENIED:
message = "Geolocation APIの利用権限がありません";
break;
case error.UNKNOWN_ERROR:
message = "UNKNOWN_ERROR:" + error.message;
break;
}
document.getElementById("location").innerHTML = message;
}
</script>
0 件のコメント:
コメントを投稿