О геолокации в HTML 5 - PullRequest
       62

О геолокации в HTML 5

28 голосов
/ 12 февраля 2010

Карты Google теперь могут точно определять мое местоположение с помощью Firefox.

Я понимаю, что это новая функция браузеров, совместимых с HTML 5, и что местоположение выбирается с помощью какой-либо функции подключенной сети Wi-Fi (надеюсь, я не делаю глупых предположений).

Что я намерен знать, так это то, как именно весь этот процесс работает:

  • Почему только в HTML 5?
  • Почему / как Firefox просит меня предоставить информацию о моем местоположении в Картах Google?
  • На какую нормальную точность можно рассчитывать?
  • Как я могу реализовать эту функцию на своих сайтах?

Заранее спасибо!

Ответы [ 3 ]

35 голосов
/ 12 февраля 2010

Как это работает?

Когда вы посещаете сайт с поддержкой определения местоположения в Firefox, браузер спросит вас, хотите ли вы сообщить свое местоположение.

Если вы дадите согласие, Firefox соберет информацию о ближайших точках беспроводного доступа и IP-адресе вашего компьютера и получит оценку вашего местоположения, отправив эту информацию в Google Location Services (служба геолокации по умолчанию в Firefox ). Эта оценка местоположения затем передается запрашивающему веб-сайту. ( Источник )

Насколько точны локации?

Точность значительно варьируется от места к месту. В некоторых местах поставщики геолокационных услуг могут предоставить местоположение с точностью до нескольких метров. Однако в других областях это может быть намного больше, чем это. Все местоположения должны рассматриваться как приблизительные, поскольку нет гарантии точности предоставленных местоположений. ( Источник )

В моем случае Firefox сообщает, что я на расстоянии около 10 км от моего реального местоположения.

Как использовать эту функцию на моем веб-сайте?

Вы бы сделали что-то вроде этого:

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) {  

        alert(position.coords.latitude + ", " + position.coords.longitude);

        // Use the latitude and location as you wish. You may set a marker
        // on Google Maps, for example.
    }); 
} 
else {
    alert("Geolocation services are not supported by your browser.");
}  

Онлайн-демонстрацию можно посмотреть здесь: Firefox HTML 5: демонстрация геолокации (Требуется браузер с поддержкой геолокации, такой как Firefox 3.1b3.)

14 голосов
/ 12 февраля 2010

HTML5 поставляет API

, который позволяет веб-браузеру (а затем и на стороне сервера веб-приложения) запросить местоположение и соответствующую информацию, такую ​​как скорость (если применимо), стандартным, унифицированным способом.

Хост и его веб-браузер предоставляют «устройства», которые вычисляют / оценивают геолокацию как таковую

Для того, чтобы этот API был полезен, требуется, чтобы базовый хост и веб-браузер
а) разрешить обмен такой информацией (обратите внимание на проблему конфиденциальности) и
b) быть несколько оборудованным (локально или через сеть, к которой они подключены) для считывания или оценки геолокации.

Методы и устройства, используемые для вычисления фактического местоположения, включают в себя комбинацию следующего (конечно, не все применимы) и не зависят от стандарта HTML 5 :

  • Устройство GPS (у многих телефонов теперь есть)
  • Маршрутная информация на уровне сети сотовой связи
  • IP-адрес / информация о маршрутизации ISP
  • Информация о роутере Wifi
  • Фиксированные данные, вводимые вручную (для ПК, находящихся в фиксированном месте)
  • ...

Поэтому ...
- HTML5 один не может определить геолокацию: само по себе обновление до нового веб-браузера не будет достаточным для получения функций геолокации в ваших приложениях и т. Д.
- Данные геолокации могут передаваться за пределы API HTML5, что позволяет телефонам с поддержкой GPS или GeoLocation предоставлять данные геолокации в других API.

0 голосов
/ 23 декабря 2013

HTML5 Geolocation API использует определенные функции, такие как глобальная система определения местоположения (GPS), IP-адрес устройства, ближайшие башни мобильной связи и ввод от пользователя, в пользовательском устройство для получения местоположения пользователей. Местоположение пользователей, полученное с помощью API геолокации, является почти точным в зависимости от типа источника, используемого для получения местоположения.

Здесь действительно хорошая демонстрация геолокации HTML5 (http://html5demos.com/geo). Каждый раз, когда веб-сайт пытается определить ваше местоположение с помощью одного из следующих API, браузер запрашивает у вас разрешение, прежде чем вызывать API для обмена ваше местоположение.

API Geolocation предоставляет следующие методы:

  • getCurrentPosition (successCallback, errorCallback, options)

    Используется для получения текущего географического местоположения пользователя.

  • watchPosition (successCallback, errorCallback, options)

    Функция возвращает watchId и вызывает successCallback с обновленными координатами. Он продолжает возвращать обновленную позицию по мере движения пользователя (например, GPS в автомобиле).

  • clearWatch (watchId)

    Останавливает метод watchPosition () на основе предоставленного watchId.

Пример кода:

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(userPositionSuccess, userPositionError);
} else {
  alert("Your browser does not support geolocation.");
}

function userPositionSuccess(position) {
  alert("Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude);
}

function userPositionError() {
  alert("There was an error retrieving your location!");
}
...