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

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

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

То, что я намереваюсь знать, - то, как весь этот процесс точно работает:

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

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

3 ответа

Решение

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

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

Если вы дадите согласие, Firefox соберет информацию о ближайших точках беспроводного доступа и IP-адресе вашего компьютера и получит оценку вашего местоположения, отправив эту информацию в Службу определения местоположения Google (служба геолокации по умолчанию в 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 Geolocation Demo (Требуется браузер с поддержкой геолокации, такой как Firefox 3.1b3.)

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

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

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

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

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

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

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

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

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

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

  • getCurrentPosition (successCallback, errorCallback, параметры)

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

  • watchPosition (successCallback, errorCallback, параметры)

    Функция возвращает 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!");
}
Другие вопросы по тегам