HTML5 Geolocation API позволяет вам поделиться своим местоположением с вашими любимыми веб-сайтами. JavaScript может фиксировать вашу широту и долготу и может быть отправлен на бэкэнд-сервер и выполнять такие интересные вещи, как поиск местных предприятий или отображение вашего местоположения на карте.
Сегодня большинство браузеров и мобильных устройств поддерживают Geolocation API. API геолокации работают с новым свойством объекта глобального навигатора, т.е. Геолокационный объект, который можно создать следующим образом:
var geolocation = navigator.geolocation;
Объект геолокации — это сервисный объект, который позволяет виджетам получать информацию о географическом местоположении устройства.
Методы геолокации
Объект геолокации предоставляет следующие методы:
Sr.No. | Метод и описание |
---|---|
1 | getCurrentPosition ()
Этот метод извлекает текущее географическое местоположение пользователя. |
2 | watchPosition ()
Этот метод извлекает периодические обновления о текущем географическом местоположении устройства. |
3 | clearWatch ()
Этот метод отменяет текущий вызов watchPosition. |
Этот метод извлекает текущее географическое местоположение пользователя.
Этот метод извлекает периодические обновления о текущем географическом местоположении устройства.
Этот метод отменяет текущий вызов watchPosition.
пример
Ниже приведен пример кода для использования любого из вышеуказанного метода —
function getLocation() { var geolocation = navigator.geolocation; geolocation.getCurrentPosition(showLocation, errorHandler); }
Здесь showLocation и errorHandler являются методами обратного вызова, которые будут использоваться для получения фактической позиции, как описано в следующем разделе, и для обработки ошибок, если они есть.
Свойства местоположения
Методы геолокации getCurrentPosition () и getPositionUsingMethodName () определяют метод обратного вызова, который получает информацию о местоположении. Эти методы вызываются асинхронно с объектом Position, который хранит полную информацию о местоположении.
Объект Position указывает текущее географическое местоположение устройства. Местоположение выражается в виде набора географических координат вместе с информацией о курсе и скорости.
В следующей таблице описаны свойства объекта Position. Для необязательных свойств, если система не может предоставить значение, значение свойства устанавливается равным нулю.
Имущество | Тип | Описание |
---|---|---|
Coords | объекты | Определяет географическое местоположение устройства. Местоположение выражается в виде набора географических координат вместе с информацией о курсе и скорости. |
coords.latitude | Число | Определяет оценку широты в десятичных градусах. Диапазон значений: [-90.00, +90.00]. |
coords.longitude | Число | Определяет оценку долготы в десятичных градусах. Диапазон значений: [-180.00, +180.00]. |
coords.altitude | Число | [Необязательно] Указывает оценку высоты в метрах над эллипсоидом 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 | логический | Указывает, хочет ли виджет получить максимально точную оценку местоположения. По умолчанию это ложно. |
Тайм-аут | Число | Свойство timeout — это количество миллисекунд, в течение которых ваше веб-приложение готово ждать позиции. |
maximumAge | Число | Задает время истечения в миллисекундах для кэшированной информации о местоположении. |
пример
Ниже приведен пример кода, который показывает, как использовать вышеупомянутые методы —