Перейти к основному содержимому

HTML API Geolocation

Geolocation API используется для получения текущего местоположения пользователя.


Определение положения пользователя

Geolocation API получает текущее местоположение пользователя. Поскольку это может влиять на конфиденциальность, местоположение недоступно, пока пользователь его не подтвердит.

Примечание: Geolocation API работает только в защищённых контекстах, таких как HTTPS. Совет: Наиболее точен на устройствах с GPS, например смартфонах или смарт-часах.


Поддержка браузерами

Geolocation поддерживается всеми современными браузерами (начиная с Chrome 5, Edge 12, Firefox 3.5, Safari 5 и Opera 10.6).


Использование HTML Geolocation API

Geolocation API доступен через navigator.geolocation, что заставляет браузер запросить у пользователя разрешение на доступ к его местоположению. Если пользователь соглашается, браузер использует лучшую доступную возможность устройства (например, GPS). Метод getCurrentPosition() возвращает текущее местоположение пользователя.

Пример проверяет, поддерживается ли геолокация, и если да, запускает getCurrentPosition(); иначе показывает сообщение. Функция успеха выводит широту и долготу, а функция ошибки показывает сообщение при сбое.

Пример

Отображение широты и долготы пользователя.

Prompt
Страница с кнопкой, которая при нажатии использует метод getCurrentPosition из Geolocation API, чтобы показать широту и долготу пользователя в абзаце, с запасным сообщением, если геолокация не поддерживается, и предупреждением (alert) при ошибке.
Результат: полная HTML-страница

Обработка ошибок и отказов

Второй параметр getCurrentPosition() обрабатывает ошибки; он задаёт функцию, которая запускается при неудачном получении местоположения. Можно проверить error.code для конкретного сообщения, обрабатывая случаи PERMISSION_DENIED, POSITION_UNAVAILABLE, TIMEOUT и UNKNOWN_ERROR.

Пример

Геолокация с подробными сообщениями об ошибках.

Prompt
Страница, похожая на базовую демонстрацию геолокации, но с подробной обработкой ошибок: callback ошибки проверяет error.code и показывает конкретное сообщение для PERMISSION_DENIED, POSITION_UNAVAILABLE, TIMEOUT и UNKNOWN_ERROR.
Результат: полная HTML-страница

Информация, зависящая от местоположения

Геолокация полезна для информации, зависящей от местоположения, например актуальной локальной информации, показа интересных мест рядом с пользователем и пошаговой GPS-навигации.


Метод getCurrentPosition() - Возвращаемые данные

При успехе getCurrentPosition() возвращает объект. Он всегда возвращает coords.latitude, coords.longitude и coords.accuracy. Остальные возвращаются только при доступности: coords.altitude (высота над уровнем моря в метрах), coords.altitudeAccuracy, coords.heading (градусы по часовой стрелке от севера), coords.speed (метры в секунду) и timestamp (дата и время ответа).


Объект Geolocation - Другие интересные методы

У объекта Geolocation есть и другие методы: watchPosition() возвращает текущее местоположение и продолжает возвращать обновления по мере перемещения пользователя (как GPS в автомобиле), а clearWatch() останавливает watchPosition(). Для тестирования watchPosition() нужно точное GPS-устройство, например смартфон.

Пример

Непрерывное отслеживание местоположения пользователя с помощью watchPosition().

Prompt
Страница, использующая метод watchPosition из Geolocation для непрерывного отображения обновляемых широты и долготы пользователя по мере его перемещения, с той же подробной обработкой ошибок (лучше всего тестировать на устройстве с GPS).
Результат: полная HTML-страница