С помощью HTML5 Геолокации Вы можете определить местоположение пользователя.
ТвитнутьОбратите внимание: IE9+, Chrome, Firefox, Opera и Safari имеют поддержку данной технологии.
С помощью HTML5 геолокации Вы можете определить местоположение пользователя. Так как информация о местоположении может нарушать конфиденциальность, прежде чем сервер сможет получить данную информацию пользователь должен явным образом подтвердить, что не имеет возражений на этот счет.
Например вот так выглядит окно, которое появляется в браузере Chrome при попытке считать информацию о местоположении:
Обратите внимание: координаты местоположения определяются более точно на мобильных устройствах, потому что они имеют свой собственный встроенный GPS приемник. Местоположение пользователей на стационарных компьютерах определяется путем комбинированного анализа IP адреса самого компьютера и IP адресов окружающих WI-FI роутеров в радиусе покрытия которых компьютер находится в данный момент.
Текущая позиция пользователя может быть определена с помощью метода getCurrentPosition() объекта navigator.geolocation.
navigator.geolocation.getCurrentPosition(success_function, error_function, options);
success_function - имя функции, которая будет вызвана в случае если координаты пользователя будут считаны удачно.
error_function - имя функции, которая будет вызвана если при считывании координат произойдет ошибка.
options - позволяет задать настройки, которые будут использованы при считывании координат. Возможные значения: enableHighAccuracy - если имеет значение true браузер будет пытаться определить местоположение как можно точнее; timeout - устанавливает максимально допустимое время, которое браузер может использовать для считывания данных (по умолчанию время считывания не ограничено); maximumAge - как долго браузер будет хранить к кэше предыдущее сохраненное значение.
В случае если пользователь разрешил использовать данные о его местоположении и они были удачно считаны браузером. В функцию success_function в качестве параметра будет передан объект, который содержит свойство timestamp (содержит время считывание координат) и объект coords, который имеет следующие свойства:
Событие | Описание |
---|---|
latitude и longitude | Широта и долгота местоположения пользователя |
altitude | Высота от уровня моря в метрах |
accuracy | Точность определения широты и долготы (чем больше число тем меньше точность) |
altitudeAccuracy | Точность определения высоты (чем больше число тем меньше точность) |
heading | Показывает направление пользователя в градусах (т.е. 0 градусов значит, что пользователь направляется на север, 180 на юг и т.д.). |
speed | Скорость перемещения в метрах в секунду |
Пример
<script> function getCoordinates() { navigator.geolocation.getCurrentPosition(showCoordinates); } function showCoordinates(position) { document.write('Широта: ' + position.coords.latitude + "<br />"); document.write('Долгота: ' + position.coords.longitude); } </script>
В случае если при считывании координат пользователя произошла какая-либо ошибка будет вызвана функция error_function. Возможные ошибки при считывании координат:
Ошибка | Описание |
---|---|
PERMISSION_DENIED | Пользователь запретил считывать информацию о его местоположении. |
POSITION_UNAVAILABLE | Браузер не может определить местоположение пользователя. |
TIMEOUT | Браузер не успел определить местоположение пользователя в выделенное ему время. |
UNKNOWN_ERROR | Во время определения местоположения произошла неизвестная ошибка. |
Пример
<script> function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: alert("Пользователь запретил считывать информацию о его местоположении."); break; case error.POSITION_UNAVAILABLE: alert("Браузер не смог определить местоположение пользователя."); break; case error.TIMEOUT: alert("Браузер не успел определить местоположение за выделенное ему время."); break; case error.UNKNOWN_ERROR: alert("Произошла неопределенная ошибка."); break; } } </script>
С помощью метода watchPosition() Вы можете считывать данные о месте положения пользователя через определенные интервалы времени. После запуска данный метод возвращает специальный индикатор, который может использоваться позднее для завершения считывания с помощью метода clearWatch().
Обратите внимание: чтобы увидеть как изменяются координаты во время перемещения мы рекомендуем тестировать данный пример на мобильных устройствах со встроенным GPS.
Пример
<script> function getCoordinates() { watchID = navigator.geolocation.watchPosition(showCoordinates); } function stop() { if (watchID) { navigator.geolocation.clearWatch(watchID); watchID = null; } } </script>
Проверить имеет ли браузер пользователя поддержку данной технологии или нет Вы можете с помощью следующей конструкции:
<script> if (navigator.geolocation) { //Код для браузеров поддерживающих геолокацию } else { //Код для браузеров неподдерживающих геолокацию } </script>