HTML5 Geolocation(地理定位)
HTML5のGeolocation APIは、ユーザーの位置を特定するために使用されます。
この機能はユーザーのプライバシーを侵害する可能性があるため、ユーザーの同意がなければ位置情報は利用できません。
位置データの取得
HTML5 Geolocation APIは、ユーザーの地理位置を取得するために使用されます。以下はサンプルスクリプトです:
<p id="demo">ボタンをクリックして現在の座標を取得します (取得には時間がかかる場合があります)。</p>
<button onclick="getLocation()">クリックしてください</button>
<script>
var x=document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML="このブラウザは位置情報を取得できません。";
}
}
function showPosition(position) {
x.innerHTML="緯度: " + position.coords.latitude + "経度: " + position.coords.longitude;
}
</script>
ブラウザのサポート
以下のブラウザがGeolocation APIをサポートしています:
- Internet Explorer 9以上
- Firefox
- Opera
- Google Chrome
- Safari
また、GPS機能を備えたデバイス(例:iPhone)では、位置情報の精度が高くなります。
エラー処理と拒否
位置情報の取得に失敗した場合、エラーを処理するための関数を指定することができます:
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
x.innerHTML="ユーザーが位置情報の取得を拒否しました。";
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="位置情報を利用できません。";
break;
case error.TIMEOUT:
x.innerHTML="位置情報のリクエストがタイムアウトしました。";
break;
case error.UNKNOWN_ERROR:
x.innerHTML="未知のエラーが発生しました。";
break;
}
}
地図への表示
以下の例では、Google Mapの静的イメージを使用して位置情報を地図上に表示します:
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
var img_url = "http://maps.googleapis.com/maps/api/staticmap?center=" + latlon + "&zoom=14&size=400x300&sensor=false";
document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
}
位置情報の属性
位置情報データには複数の属性があります。主な属性は以下の通りです:
属性 | 説明 |
---|---|
coords.latitude | 緯度(十進数) |
coords.longitude | 経度(十進数) |
coords.accuracy | 位置精度 |
coords.altitude | 海抜(メートル) |
coords.altitudeAccuracy | 海抜の精度 |
coords.heading | 方角(北からの度数) |
coords.speed | 速度(メートル/秒) |
timestamp | レスポンスの日時 |
他の便利なメソッド
watchPosition() - ユーザーの現在位置を返し、その後も位置が更新される都度通知されます。
clearWatch() - watchPosition()メソッドを停止します。
<body>
<p id="demo">ボタンをクリックして現在の座標を取得します (取得には時間がかかる場合があります)。</p>
<button onclick="getLocation()">クリックしてください</button>
<script>
var x=document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
x.innerHTML="このブラウザは位置情報を取得できません。";
}
}
function showPosition(position) {
x.innerHTML="緯度: " + position.coords.latitude + "経度:" + position.coords.longitude;
}
</script>
</body>
FAQ
Geolocation APIを使用するためにユーザーの許可は必要ですか?
はい、Geolocation APIを使用するためにはユーザーの明示的な許可が必要です。
すべてのブラウザでGeolocation APIがサポートされていますか?
いいえ、古いバージョンのブラウザや一部のブラウザではサポートされていないことがあります。
Geolocation APIを使用するのに追加のプラグインは必要ですか?
いいえ、Geolocation APIはHTML5標準の一部であり、ブラウザがサポートしている限り、追加のプラグインは不要です。