Использование геолокации

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Geolocation API позволяет пользователю предоставлять своё местоположение web-приложению, если пользователь согласится предоставить его. Из соображений конфиденциальности, у пользователя будет запрошено разрешение на предоставление информации о местоположении.

Концепты и использование

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

API геолокации может быть вызвано через Navigator.geolocation; это заставит браузер пользователя вывести уведомление с запросом для доступа к текущему местоположению. Если его одобрят, то браузер сможет предоставить доступ ко всем возможностям по работе с информацией о местонахождении (например, GPS).

Тогда разработчику станут доступны несколько разных способов получения соответствующей информации:

  • Geolocation.getCurrentPosition(): возвратит местоположение устройства
  • Geolocation.watchPosition(): зарегистрирует функцию-обработчик, которая будет вызываться автоматически каждый раз, когда местоположение изменится, возвращая новые данные.

В обоих случая, методы принимают три аргумента:

  • Обязательную колбэк-функцию при успехе: если удалось получить местоположение пользователя, то функция вызовется с объектом GeolocationPosition как одним параметром, предоставляющим доступ к данным о месторасположении.
  • Необязательную колбэк-функцию при ошибке: если не удалось получить позицию, то колбэк-функция вызовется с объектом GeolocationPositionError как одним параметром, содержащим информацию о том, что пошло не так.
  • Необязательный объект PositionOptions, который содержит надстройки получения данных о местоположении.

Интерфейсы

Geolocation

Главный класс этого API — содержит методы для получения текущего местоположения пользователя, наблюдает за его изменениями и удаляет функции-наблюдатели.

GeolocationPosition

Предоставляет месторасположение пользователя. Экземпляр GeolocationPosition, полученный при успешном вызове одного из методов Geolocation, внутри колбэк-функции при успехе, содержит метку времени плюс экземпляр объекта GeolocationCoordinates.

GeolocationCoordinates

Предоставлять координаты пользователя; Экземпляр GeolocationCoordinates содержит широту, долготу и прочую важную подобную информацию.

GeolocationPositionError

GeolocationPositionError возвращается при неуспешном вызове методов, содержащихся в Geolocation, внутри колбэк-функции при ошибке, содержит код ошибки и сообщение.

Точка входа в API. Возвращает экземпляр объекта Geolocation, из которого становятся доступны все функции и методы.

Словари

PositionOptions

Предоставляет объект, содержащий опции, которые можно передать как параметр в Geolocation.getCurrentPosition() и Geolocation.watchPosition().

Спецификации

Specification
Geolocation
# geolocation_interface

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Geolocation
clearWatch
getCurrentPosition
Secure context required
watchPosition

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
See implementation notes.

Доступность

Так как местоположение, основанное на WiFi, часто предоставляется Google, API местоположения может быть не доступен в Китае. Вы можете использовать местных провайдеров, таких как Baidu, Autonavi или Tencent. Эти сервисы используют IP-адрес пользователя и/или приложение для предоставления наиболее точной позиции.

Смотрите также