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

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

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

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

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

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

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

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

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

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

`Geolocation`

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

`GeolocationPosition`

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

`GeolocationCoordinates`

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

`GeolocationPositionError`

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

`Navigator.geolocation`

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

Словари
-------

`PositionOptions` (en-US)

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

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

| Specification |
| --- |
| Geolocation API # geolocation\_interface |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### Доступность

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

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

* Использование API местоположения (en-US)
* API местоположения на w3.org
* Кто изменил моё местоположение? (Hacks блог)