Работа с 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+.
Проверка на поддръжката на браузъра за API за геолокация
Трябва да работите с геолокация чрез обекта navigator.geolocation, който съдържа само 3 метода.
navigator.geolocation.getCurrentPosition()- Получава текущото местоположение на потребителя.navigator.geolocation.watchPosition()- Получава текущото местоположение на потребителя при всяка промяна. Самото устройство на потребителя определя оптималния интервал на запитване.navigator.geolocation.clearWatch()- Спира проследяването на потребителя, инициирано от метода watchPosition.
Методите getCurrentPosition и watchPosition са сходни, с изключение на това, че методът watchPosition се опитва да следи промяната в позицията на потребителя и работата му е подобна на функцията setInterval, само без да се посочва времето на интервала на запитване, самото устройство на потребителя е отговорно за това. Методът watchPosition връща идентификатора, от който се нуждае методътclearWatch, за да спрете проследяването.
Освен това всички примери ще се основават на метода getCurrentPosition.
success– функция за обратно извикване, която ще бъде извикана при успешно определяне на геолокацията на потребителя.грешка— функция за обратно извикване, която ще бъде извикана, когато възникне грешка или потребителят отмени геолокацията.optionsе незадължителен параметър, който трябва да бъде обект с допълнителни опции.
Обектът опции може да съдържа някои свойства:
enableHighAccuracy– точност на определяне на позиция (true/false) по-висока точност, по-ниска точност. За да използвате средствата за определяне на геолокация с голяма точност, устройството на потребителя трябва да е оборудвано с тези инструменти. Например в мобилни устройства това средство може да бъде GPS. В противен случай няма да има ефект от превключването на този параметър.време за изчакванее броят милисекунди, които уеб приложението ще изчака, за да получи позицията на потребителя. Таймерът няма да стартира, докато потребителят не даде разрешение за изчисляване на неговата позиция.maximumAgeе броят милисекунди, докато данните се съхраняват в кеша. Тоест, не е необходимо постоянно да преопределяте геолокацията на потребителя, но можете бързо да вземете старите данни.
Обратното извикване за успех приема обект Position, който съдържа местоположението на потребителя.
Position.coords.latitude- географска ширина като число;Позиция. coords.longitude- дължина като число;Position.coords.accuracy— точност на позицията;Position.coords.altitude— надморска височина в метри над средното морско равнище;Position.coords.altitudeAccuracy— точност на позицията на надморската височина;Position.coords.heading- градуси по часовниковата стрелкаот север;Position.coords.speed— скорост в метри в секунда;Position.timestamp- време за отговор.
Обратното извикване на грешка приема обектPositionError, който съдържа кода на грешката и текстово съобщение.
PositionError.code– код на грешка, който е числова стойност:
1съответства на константатаPERMISSION_DENIED– потребителят отказва да сподели местоположението си;2съответства на константатаPOSITION_UNAVAILABLE– мрежата не работи, няма връзка със сателити;3съответства на константатаTIMEOUT– работата е приключила поради таймаут, определянето на геолокация отнема твърде много време.
PositionError.messageе съобщение, което не е предназначено за потребителя, но е по-подходящо за регистрационни файлове.
Така. И малко код.