Szukaj…


Składnia

  • navigator.geolocation.getCurrentPosition (successFunc, failureFunc)
  • navigator.geolocation.watchPosition ( updateFunc , failureFunc )
  • navigator.geolocation.clearWatch ( watchId )

Uwagi

Interfejs API geolokalizacji robi to, czego można się spodziewać: pobiera informacje o miejscu pobytu klienta, reprezentowane w szerokości i długości geograficznej. Jednak użytkownik musi wyrazić zgodę na podanie swojej lokalizacji.

Ten interfejs API jest zdefiniowany w specyfikacji interfejsu API geolokalizacji W3C. Przebadano funkcje uzyskiwania adresów obywatelskich i umożliwiające geofencing / wyzwalanie zdarzeń, ale nie są one powszechnie wdrażane.

Aby sprawdzić, czy przeglądarka obsługuje interfejs API geolokalizacji:

if(navigator.geolocation){
    // Horray! Support!
} else {
    // No support...
}

Uzyskaj szerokość i długość geograficzną użytkownika

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);
};

Bardziej opisowe kody błędów

W przypadku niepowodzenia geolokalizacji funkcja zwrotna otrzyma obiekt PositionError . Obiekt będzie zawierać atrybut o nazwie code który będzie miał wartość 1 , 2 lub 3 . Każda z tych liczb oznacza inny rodzaj błędu; funkcja getErrorCode() poniżej traktuje PositionError.code jako swój jedyny argument i zwraca ciąg z nazwą błędu, który wystąpił.

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";
  }
};

Może być używany w geolocationFailure() sposób:

var geolocationFailure = function(err) {
  console.log("ERROR (" + getErrorCode(err) + "): " + err.message);
};

Otrzymuj aktualizacje, gdy zmieni się lokalizacja użytkownika

Możesz także otrzymywać regularne aktualizacje lokalizacji użytkownika; na przykład podczas poruszania się podczas korzystania z urządzenia mobilnego. Śledzenie lokalizacji w czasie może być bardzo wrażliwe, dlatego z wyprzedzeniem wyjaśnij użytkownikowi, dlaczego prosisz o to pozwolenie i jak wykorzystasz dane.

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);
};

Aby wyłączyć ciągłe aktualizacje:

navigator.geolocation.clearWatch(watchId);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow