Под знаменем HTML 5

JavaScript API: где я?

Вот практически и подошла к концу наша сага про новые возможности JavaScript, которые будут реализованы в современных браузерах и которые уже сейчас можно опробовать в наиболее прогрессивных веб-обозревателях. В этой статье рассмотрим функцию определения местоположения браузера. Дальше нам останется разве что познакомиться с реализацией 2D/3D-графики в браузере, но это уже отдельная тема.

Геолокация - одна из интересных функциональных особенностей браузеров поколения HTML 5. Благодаря функции геолокации веб-приложение или веб-сайт может определить местоположение, географические координаты устройства, на котором работает пользователь.

В доказательство удобства такой функциональности обычно приводится пример поиска через Интернет какого-нибудь продукта. Например, человек собирается сделать покупку нужного ему товара и ищет в Интернете отзывы о продукте, который планирует купить. Если сайт или поисковая система сможет получить и обработать информацию о местонахождении пользователя, то ему будут предложены ближайшие торговые точки с лучшими отзывами о качестве и количестве продукта.

Впрочем, злые языки утверждают, что такая функция в браузере - это банальный шпионаж. И своя правда в таком отношении к геолокации тоже есть.

Функция определения географического расположения в меньшей степени полезна для стационарных компьютеров. Сидит человек в одной точке земного шара всю жизнь и пусть себе сидит.

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

Приняв все эти соображения к сведению, учёные мужи из консорциума W3C, отвечающего за все наши интернеты, решили стандартизировать геолокацию в браузерах. И скоро каждый браузер будет иметь унифицированный интерфейс JavaScript для определения своего географического местоположения. Хотя геолокация уже сейчас поддерживается практически любым браузером. Кажется, даже IE 8 поддерживает эту функциональность.

Получение нужных географических координат предполагает три законных способа. Первый способ - получение геоинформации по IP-адресу, через который компьютер имеет доступ в Интернет. Есть специальные базы, позволяющие получить данные местонахождения через адрес IP.

Это самый неэффективный и неточный способ. Во многих случаях получается адрес не пользователя, а провайдера. Но, по крайней мере, уж населённый пункт, в котором пользователь находится, таким способом определяется довольно точно.

Второй способ - это определение местоположения по ближайшим точкам wi-fi через сервис WPS (Wi-Fi Positioning System). Это более точный метод определения географического местоположения.

Третий способ применяется в современных смартфонах и делается согласно данных ближайших вышек сотовой связи или через данные GPS-приёмника.

Спецификация W3C Geolocation определяет JavaScript API для доступа к информации о местонахождении компьютерного устройства, таких, как смартфон или ноутбук.

Интерфейс JavaScript геопозиционирования для браузеров представляет собой специальный объект geolocation с функцией getCurrentPosition(), через которую определяют долготу и широту компьютерного устройства согласно возможностям данного компьютерного устройства.

// Определяем поддержку геолокации
if (navigator.geolocation) {

//Получаем широту и долготу
 navigator.geolocation.getCurrentPosition( function(position)  {
  var lat = position.coords.latitude;
  var lng = position.coords.longitude;
  alert('latitude :'+lat+' longitude: '+lng);
 });
}

Следует обязательно сказать, что, согласно стандарту W3C, геопозиционирование является исключительно добровольной функцией. То есть браузер должен обязательно спрашивать у пользователя в каждом конкретном случае разрешение на передачу сайту или веб-приложению информации о местоположении пользователя.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

34 за 2010 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!