Впервые опубликовано | 22 декабря 2008 г. ( 2008-12-22 ) | [1] [2]
---|---|
Последняя версия | Рекомендация W3C 1 сентября 2022 г [3] ( 2022-09-01 ) |
Организация | |
Комитет | Рабочая группа по геолокации [3] |
Редакторы | Андрей Попеску [3] |
Домен | Информация о географическом местоположении |
Веб-сайт | www.w3.org/TR/geolocation-API/ |
W3C Geolocation API — это попытка Консорциума Всемирной паутины (W3C) стандартизировать интерфейс для получения информации о географическом местоположении для клиентского устройства. [3] Он определяет набор объектов, соответствующих стандарту ECMAScript , которые при выполнении в клиентском приложении предоставляют местоположение клиентского устройства посредством консультирования с серверами информации о местоположении , которые прозрачны для интерфейса прикладного программирования (API). Наиболее распространенными источниками информации о местоположении являются IP-адрес , MAC-адрес Wi-Fi и Bluetooth , радиочастотная идентификация (RFID), местоположение соединения Wi-Fi или идентификаторы глобальной системы позиционирования (GPS) и сот GSM / CDMA . Местоположение возвращается с заданной точностью в зависимости от наилучшего доступного источника информации о местоположении.
Результат API геолокации W3C обычно дает 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 работает, отправляя набор параметров, которые могут дать подсказку о том, где находится физическое местоположение пользователя, на сервер поставщика сетевого местоположения, который по умолчанию предоставляется Google (code.l.google.com). [13] Некоторые из параметров представляют собой списки обнаруженных вышек мобильной связи и сетей Wi-Fi, все с обнаруженной мощностью сигнала. Эти параметры инкапсулируются в сообщение JavaScript Object Notation ( JSON ) и отправляются поставщику сетевого местоположения через HTTP POST. На основе этих параметров поставщик сетевого местоположения может вычислить местоположение. Обычные способы использования этой информации о местоположении включают обеспечение контроля доступа, локализацию и настройку контента, анализ трафика, контекстную рекламу и предотвращение кражи личных данных. [14]
Простой код JavaScript , который проверяет, реализован ли в браузере API геолокации, а затем использует его для получения текущего местоположения устройства. Этот код создает функцию, которую можно вызвать в HTML с помощью <body onload="geoFindMe()">
:
const geoFindMe = () = > { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition ( success , error , geoOptions ) ; } else { console.log ( " Службы геолокации не поддерживаются вашим веб-браузером. " ) ; } } const success = ( position ) => { const latitude = position . coords . latitude ; const longitude = position . coords . longitude ; const altitude = position . coords . altitude ; const precision = position . coords . accuracy ; console . log ( `lat: ${ latitude } long: ${ longitude } ` ); } const error = ( error ) => { console . log ( `Невозможно определить ваше местоположение из-за ${ error . code } : ${ error . message } ` ); } const geoOptions = { enableHighAccuracy : true , maximumAge : 30000 , timeout : 27000 };