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