サーチ…
構文
- navigator.geolocation.getCurrentPosition( successFunc 、 failureFunc )
- navigator.geolocation.watchPosition( updateFunc 、 failureFunc )
- navigator.geolocation.clearWatch( watchId )
備考
Geolocation APIは、緯度と経度で表されるクライアントの居場所情報を取得します。しかし、その場所を譲ることに同意するのはユーザーの責任です。
このAPIは、W3C ジオロケーションAPI仕様で定義されています 。市民の住所を取得し、イベントのジオフェンシング/トリガーを可能にするための機能が探求されているが、広く実装されていない。
ブラウザがGeolocation APIをサポートしているかどうかを確認するには:
if(navigator.geolocation){
// Horray! Support!
} else {
// No support...
}
ユーザーの緯度と経度を取得する
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationFailure);
} else {
console.log("Geolocation is not supported by this browser.");
}
// Function that will be called if the query succeeds
var geolocationSuccess = function(pos) {
console.log("Your location is " + pos.coords.latitude + "°, " + pos.coords.longitude + "°.");
};
// Function that will be called if the query fails
var geolocationFailure = function(err) {
console.log("ERROR (" + err.code + "): " + err.message);
};
よりわかりやすいエラーコード
ジオロケーションが失敗した場合、コールバック関数はPositionError
オブジェクトを受け取ります。オブジェクトは、属性名前含まれるcode
の値があります1
、 2
、または3
。これらの数字のそれぞれは、異なる種類のエラーを示します。以下のgetErrorCode()
関数は唯一の引数としてPositionError.code
をとり、発生したエラーの名前の文字列を返します。
var getErrorCode = function(err) {
switch (err.code) {
case err.PERMISSION_DENIED:
return "PERMISSION_DENIED";
case err.POSITION_UNAVAILABLE:
return "POSITION_UNAVAILABLE";
case err.TIMEOUT:
return "TIMEOUT";
default:
return "UNKNOWN_ERROR";
}
};
これはgeolocationFailure()
ように使用できます:
var geolocationFailure = function(err) {
console.log("ERROR (" + getErrorCode(err) + "): " + err.message);
};
ユーザーの場所が変更されたときに更新を取得する
また、ユーザーの場所の定期的な更新を受け取ることもできます。たとえば、モバイルデバイスを使用している間に移動します。時間の経過に伴う位置の追跡は非常に敏感なので、事前にこの許可を求める理由とデータの使用方法を説明してください。
if (navigator.geolocation) {
//after the user indicates that they want to turn on continuous location-tracking
var watchId = navigator.geolocation.watchPosition(updateLocation, geolocationFailure);
} else {
console.log("Geolocation is not supported by this browser.");
}
var updateLocation = function(position) {
console.log("New position at: " + position.coords.latitude + ", " + position.coords.longitude);
};
継続的な更新を無効にするには:
navigator.geolocation.clearWatch(watchId);
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow