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

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

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

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

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

Спасибо заранее!

Ответ 1

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

Когда вы посещаете веб-сайт, ориентированный на местоположение в 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 Geolocation Demo (Требуется браузер с поддержкой геолокации, такой как Firefox 3.1b3.)

Ответ 2

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

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

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

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

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

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

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

Ответ 3

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

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

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

  • 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!");
}