Робота з HTML5 Geolocation API

Давайте поговоримо проHTML5 Geolocation API, яке використовується для отримання географічного положення користувача. За допомогою геолокації API, користувач може поділитися здовірчим веб-додаткомсвоїм місцезнаходженням.

Ключовий момент у конфіденційності інформації, що передається. Браузери не можуть отримувати інформацію про розташування користувача без згоди користувача. Іншими словами, користувач повинен дати згоду на передачу свого місця розташування або відмовитися від передачі даних. Діалог із користувачем зазвичай ведеться через інформаційну панель у верхній частині вікна браузера.

Відразу варто зазначити, що Геолокацію підтримую усі сучасні браузери та навіть IE. Загальна картина виглядає так:IE9+, FireFox 3.5+, Safari 5.0+, Chrome 5.0+, Opera 10.6+, iPhone 3.0+, Android 2.0+.

Перевірка підтримки Geolocation API браузером

Працювати з геолокацією потрібно через об'єкт navigator.geolocation, який містить лише 3 методи.

navigator.geolocation.getCurrentPosition()— Визначає поточне розташування користувача.navigator.geolocation.watchPosition()– Щоразу визначає поточне розташування користувача, як тільки воно змінюється. Пристрій користувача саме визначає оптимальний інтервал опитування.navigator.geolocation.clearWatch()– Зупиняє стеження за користувачем ініційоване методом watchPosition.

Методи getCurrentPosition та watchPosition схожі, за винятком того, що метод watchPosition намагається стежити за зміною положення користувача та його робота нагадує функцію setInterval, тільки без вказівки часу інтервалу опитування, за це відповідає сам пристрій користувача. Метод watchPosition повертає ідентифікатор, який потрібний методуclearWatch для зупинки стеження.

Далі всі приклади будуть засновані на методі getCurrentPosition.

success– callback функція, яка буде викликана при успішному визначенні геопозиції користувача.error— callback функція, яка буде викликана при помилці або скасуванні визначення геопозиції користувачем.options– необов'язковий параметр, який має бути об'єктом із додатковими опціями.

Об'єкт options може містити деякі властивості:

enableHighAccuracy– точність визначення позиції (true/false) більша точність, менша точність. Для використання засобів визначення геопозиції з великою точністю, пристрій користувача повинен бути обладнаний цими засобами. Наприклад, у мобільних пристроях цим засобом може виступати GPS. В іншому випадку, ніякого ефекту від перемикання цього параметра не станеться.timeout— кількість мілісекунд, яку веб-додаток буде очікувати для отримання положення користувача. Таймер не почне відлік, доки користувач не дасть дозвіл на обчислення його положення.maximumAge— кількість мілісекунд, доки дані зберігаються в кеші. Тобто не потрібно постійно визначати геопозицію користувача, а можна швидко взяти старі дані.

Функція зворотного виклику success приймає об'єкт Position, який містить дані про геопозицію користувача.

Position.coords.latitude- широта у вигляді числа;Position. coords.longitude - довгота у вигляді числа;Position.coords.accuracy- точність позиції;Position.coords.altitude- висота в метрах над середнім рівнем моря;Position.coords.altitudeAccuracy- точність положення висоти;Position.coords.heading— градуси за годинниковою стрілкоюз півночі;Position.coords.speed- швидкість в метрах за секунду;Position.timestamp- час відгуку.

Функція зворотного виклику error приймає об'єктPositionError, який містить код помилки та текстове повідомлення.

PositionError.code– код помилки, який є цифровим значенням:

1відповідає константіPERMISSION_DENIED– користувач відмовився повідомляти своє місце;2відповідає константіPOSITION_UNAVAILABLE– мережа не працює, немає зв'язку із супутниками;3відповідає константіTIMEOUT– робота завершилася по таймууту, визначення геопозиції займає надто багато часу.

PositionError.message– повідомлення, яке не призначене для користувача, а більше підходить для логів.

І так. А трохи коду.