API геолокации W3C — это попытка Консорциума Всемирной паутины (W3C) стандартизировать интерфейс для получения информации о географическом местоположении для клиентского устройства. [3] Он определяет набор объектов, соответствующих стандарту ECMAScript , которые при выполнении в клиентском приложении определяют местоположение клиентского устройства посредством консультации с серверами информации о местоположении , которые прозрачны для интерфейса прикладного программирования (API). Наиболее распространенными источниками информации о местоположении являются IP-адрес , MAC-адрес Wi-Fi и Bluetooth , радиочастотная идентификация (RFID), местоположение соединения Wi-Fi или система глобального позиционирования устройства (GPS) и идентификаторы сот GSM / CDMA . Местоположение возвращается с заданной точностью в зависимости от наилучшего доступного источника информации о местоположении.
Результат W3C Geolocation API обычно дает 4 свойства местоположения, включая широту и долготу (координаты), высоту (высоту) и точность [собранной позиции], которые зависят от источников местоположения. [ нужна цитата ]
Веб-страницы могут напрямую использовать API геолокации, если веб-браузер его реализует. Исторически сложилось так, что некоторые браузеры могли получить поддержку через плагин Google Gears , но его поддержка была прекращена в 2010 году, а серверный API, от которого он зависел, перестал отвечать на запросы в 2012 году. [4] [5]
API геолокации идеально подходит для веб-приложений для мобильных устройств, таких как смартфоны . На настольных компьютерах API геолокации W3C работает в Firefox начиная с версии 3.5, Google Chrome , [6] Opera 10.6, [7] Internet Explorer 9.0, [8] и Safari 5. На мобильных устройствах он работает на Android (прошивка 2.0+). ), iOS , Windows Phone и Maemo . API геолокации W3C также поддерживается Opera Mobile 10.1, доступной для устройств Android и Symbian (S60 поколений 3 и 5) с 24 ноября 2010 года. [9] Браузеры изначально разрешали доступ к API в незащищенных контекстах, но в контексте безопасного. Контексты, [10] браузеры, например Chrome, [11] теперь обычно требуют безопасного соединения.
Google Gears обеспечил поддержку геолокации для старых и несовместимых браузеров, включая Internet Explorer 7.0+ в качестве плагина Gears и Google Chrome, в котором Gears реализована изначально. Он также поддерживал геолокацию на мобильных устройствах в качестве плагина для браузера Android (до версии 2.0) и Opera Mobile для Windows Mobile . Однако API геолокации Google Gears несовместим с API геолокации W3C и больше не поддерживается.
API геолокации не предоставляет информацию о местоположении. Информация о местоположении получается устройством (например, смартфоном, ПК или модемом), которое затем передается через API для переноса в браузер. Обычно геолокация пытается определить положение устройства, используя один из этих нескольких методов.
Хотя реализация не указана, API геолокации W3C построен на существующих технологиях и находится под сильным влиянием API геолокации Google Gears. Пример: реализация геолокации в Firefox [12] использует поставщика сетевых местоположений Google. [5] Google Gears Geolocation работает, отправляя набор параметров, которые могут подсказать, где находится физическое местоположение пользователя, на сервер поставщика сетевого местоположения, который по умолчанию предоставляется Google (code.l.google.com). ). [13] Некоторые параметры представляют собой списки обнаруженных вышек мобильной связи и сетей Wi-Fi, все с измеренной мощностью сигнала. Эти параметры инкапсулируются в сообщение нотации объектов JavaScript ( JSON ) и отправляются поставщику сетевых расположений через HTTP POST. На основе этих параметров поставщик сетевого местоположения может рассчитать местоположение. Обычно эта информация о местоположении используется для обеспечения контроля доступа, локализации и настройки контента, анализа трафика, контекстной рекламы и предотвращения кражи личных данных. [14]
Простой код JavaScript , который проверяет, реализован ли в браузере API геолокации, а затем использует его для получения текущего положения устройства. этот код создает функцию, которую можно вызвать в HTML, используя <body onload="geoFindMe()">
:
const geoFindMe = () => { if ( navigator . geolocation ) { navigator . геолокация . getCurrentPosition ( успех , ошибка , geoOptions ); } Еще { консоль . log ( "Службы геолокации не поддерживаются вашим веб-браузером." ); } } const успех = ( позиция ) => { const широта = позиция . координаты . широта ; константная долгота = позиция . координаты . долгота ; константная высота = позиция . координаты . высота ; константная точность = позиция . координаты . точность ; консоль . log ( `lat: ${ latitude } long: ${ longitude } ` ); } const error = ( ошибка ) => { console . log ( `Невозможно получить ваше местоположение из-за ${ error . code } : ${ error . message } ` ); } const geoOptions = { enableHighAccuracy : true , MaximumAge : 30000 , тайм-аут : 27000 };