HTML5 - Геолокация
HTML5 Geolocation API позволяет вам делиться своим местоположением с любимыми веб-сайтами. JavaScript может фиксировать вашу широту и долготу, а также может быть отправлен на внутренний веб-сервер и выполнять необычные вещи с учетом местоположения, такие как поиск местных предприятий или отображение вашего местоположения на карте.
Сегодня большинство браузеров и мобильных устройств поддерживают API геолокации. API геолокации работают с новым свойством глобального объекта навигатора, т.е. Объект геолокации, который можно создать следующим образом -
var geolocation = navigator.geolocation;
Объект геолокации - это служебный объект, который позволяет виджетам получать информацию о географическом местоположении устройства.
Методы геолокации
Объект геолокации предоставляет следующие методы -
Sr. No. | Метод и описание |
---|---|
1 | getCurrentPosition () Этот метод извлекает текущее географическое положение пользователя. |
2 | watchPosition () Этот метод получает периодические обновления о текущем географическом положении устройства. |
3 | clearWatch () Этот метод отменяет текущий вызов watchPosition. |
пример
Ниже приведен пример кода для использования любого из вышеперечисленных методов.
function getLocation() {
var geolocation = navigator.geolocation;
geolocation.getCurrentPosition(showLocation, errorHandler);
}
Здесь showLocation и errorHandler - это методы обратного вызова, которые будут использоваться для получения фактического положения, как описано в следующем разделе, и для обработки ошибок, если они есть.
Свойства местоположения
Методы геолокации getCurrentPosition () и getPositionUsingMethodName () определяют метод обратного вызова, который получает информацию о местоположении. Эти методы вызываются асинхронно с объектомPosition в котором хранится полная информация о местоположении.
В Positionобъект указывает текущее географическое положение устройства. Местоположение выражается как набор географических координат вместе с информацией о курсе и скорости.
В следующей таблице описаны свойства объекта Position. Для дополнительных свойств, если система не может предоставить значение, значение свойства устанавливается равным нулю.
Свойство | Тип | Описание |
---|---|---|
координаты | объекты | Определяет географическое положение устройства. Местоположение выражается как набор географических координат вместе с информацией о курсе и скорости. |
координаты широты | номер | Задает оценку широты в десятичных градусах. Диапазон значений: [-90,00, +90,00]. |
coords.longitude | номер | Задает оценку долготы в десятичных градусах. Диапазон значений: [-180,00, +180,00]. |
координаты. высота | номер | [Необязательно] Задает оценку высоты в метрах над эллипсоидом WGS 84. |
coords.accuracy | номер | [Необязательно] Задает точность оценок широты и долготы в метрах. |
coords.altitudeAccuracy | номер | [Необязательно] Задает точность оценки высоты в метрах. |
coords.heading | номер | [Необязательно] Задает текущее направление движения устройства в градусах по часовой стрелке относительно истинного севера. |
coords.speed | номер | [Необязательно] Указывает текущую путевую скорость устройства в метрах в секунду. |
отметка времени | свидание | Указывает время, когда информация о местоположении была получена и был создан объект Position. |
пример
Ниже приведен пример кода, в котором используется объект Position. Здесь метод showLocation - это метод обратного вызова -
function showLocation( position ) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
...
}
Обработка ошибок
Геолокация сложна, и от нее требуется очень много времени, чтобы отловить любую ошибку и правильно ее обработать.
Методы геолокации getCurrentPosition () и watchPosition () используют метод обратного вызова обработчика ошибок, который дает PositionErrorобъект. Этот объект имеет следующие два свойства -
Свойство | Тип | Описание |
---|---|---|
код | номер | Содержит числовой код ошибки. |
сообщение | Строка | Содержит удобочитаемое описание ошибки. |
В следующей таблице описаны возможные коды ошибок, возвращаемые в объекте PositionError.
Код | Постоянный | Описание |
---|---|---|
0 | НЕИЗВЕСТНАЯ ОШИБКА | Метод не смог получить местоположение устройства из-за неизвестной ошибки. |
1 | В ДОСТУПЕ ОТКАЗАНО | Этому методу не удалось получить местоположение устройства, поскольку у приложения нет разрешения на использование службы определения местоположения. |
2 | POSITION_UNAVAILABLE | Местоположение устройства не удалось определить. |
3 | Тайм-аут | Метод не смог получить информацию о местоположении в течение указанного максимального интервала ожидания. |
пример
Ниже приведен пример кода, в котором используется объект PositionError. Здесь метод errorHandler - это метод обратного вызова -
function errorHandler( err ) {
if (err.code == 1) {
// access is denied
}
...
}
Параметры положения
Ниже приведен фактический синтаксис метода getCurrentPosition ():
getCurrentPosition(callback, ErrorCallback, options)
Здесь третий аргумент - PositionOptions объект, который определяет набор параметров для получения географического местоположения устройства.
Ниже приведены параметры, которые можно указать в качестве третьего аргумента.
Свойство | Тип | Описание |
---|---|---|
enableHighAccuracy | Булево | Указывает, хочет ли виджет получить наиболее точную оценку местоположения. По умолчанию это ложь. |
тайм-аут | номер | Свойство тайм-аута - это количество миллисекунд, в течение которого ваше веб-приложение готово ждать позиции. |
максимальный возраст | номер | Задает время истечения срока хранения кэшированной информации о местоположении в миллисекундах. |
пример
Ниже приведен пример кода, который показывает, как использовать вышеупомянутые методы.
function getLocation() {
var geolocation = navigator.geolocation;
geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});
}