С помощью 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>