Поиск…
Синтаксис
- 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);