サーチ…


構文

  • navigator.geolocation.getCurrentPosition( successFuncfailureFunc
  • navigator.geolocation.watchPosition( updateFuncfailureFunc
  • 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の値があります12 、または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