Поиск…


Синтаксис

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

замечания

API геолокации выполняет то, что вы можете ожидать: получить информацию о местонахождении клиента, представленном в широте и долготе. Тем не менее, пользователь должен согласиться отдать свое местоположение.

Этот API определен в Спецификации API геоданных W3C. Были изучены возможности для получения гражданских адресов и включения геообработки / запуска событий, но они не получили широкого распространения.

Чтобы проверить, поддерживает ли браузер 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