среда, 22 июня 2011 г.

HTML5 Geolocation - standarts in our life.

С приходом стандарта HTML5 в браузерах появляется все больше интересных возможностей.
Одна из таких возможностей geolocation API.Geolocation API представляет собой интерфейс к
geolocation сервису, который пользователь может самостоятельно указать в настройках браузера.
По умолчанию, используется Google Location Services. Сервис в ответ на запрос возвращает текущее положение пользователя в виде координат (широта и долгота).

Как это работает:
К примеру, Firefox отправляет на сервис информацию о ближайших точках доступа. В случае
если клиент не использует WiFi - браузер использует айпи адрес чтобы определить местоположение.
Мобильные устройства могут использовать информацию о ближайших базовых станциях либо если имеется подключенный GPS приемник
координаты определяются с помощью приемника.




Безопасность:

Информация о текущем местоположении пользователя конфиденциальна. Перед тем как разрешить приложению
доступ к этой информации - браузер спросит разрешения у пользователя. Данное поведение описано в
спецификации (http://www.w3.org/TR/geolocation-API/#privacy_for_uas). Никакие данные кроме айпи адреса
и информации о ближайших точках доступа (WiFi) не пересылаются на сервис(ни куки ни сохраненные пароли).

Совместимость:
На данный момент geolocation поддерживают следующие браузеры:
IE    Firefox    Safari    Chrome    Opera    iPhone    Android
9.0+    3.5+    5.0+    5.0+    10.6+    3.0+    2.0+

Ближе к делу:
Определение позиции пользователя возможно с помощью встроенного объекта navigator.geolocation.
Рассмотрим более подробно на примерах:

function showMap(position) {
// Show a map centered at 
// (position.coords.latitude, position.coords.longitude).
}

// One-shot position request.
navigator.geolocation.getCurrentPosition(showMap);

getCurrentPosition - попытается определить текущее местоположение
пользователя с помощью сервиса и в случае успеха вызовет callback функцию и
передаст в нее объект Position.

Также возможно остлеживать изменения позиции пользователя:
function scrollMap(position) {
  // Скроллирует карту так что она бдует центрирована на точку 
(position.coords.latitude, position.coords.longitude).
}

//Стартует слежение за изменениями позиции пользователя
var watchId = navigator.geolocation.watchPosition(scrollMap);

function buttonClickHandler() {
  //Останавливает слежение по клику на кнопке
  navigator.geolocation.clearWatch(watchId);
}

Все это дает большие преимущества перед отдельными решениями - теперь мы можем использовать единое решение.

Ссылки:
W3C spec:
http://www.w3.org/TR/geolocation-API

Тесты:
http://benwerd.com/lab/geo.php
http://channy.creation.net/project/firefox/geolocation.html

Статьи
http://diveintohtml5.org/geolocation.html
http://hacks.mozilla.org/2009/06/geolocation/
http://www.mozilla.com/ru/firefox/geolocation/

Комментариев нет:

Отправить комментарий