О геолокации в 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!");
}