Сайт
Чукина
Владимира
Владимировича

29 марта 2024 г.

Геолокация

Геолокация

Геолокация - определение местоположения (широты и долготы места) пользователя сети Интернет по радиосигналам глобальной навигационной спутниковой системы ГЛОНАСС/GPS, по уровню сигналов точек доступа WiFi, по номеру соты CellID в сети сотовой связи, по IP-адресу компьютера.

Геолокация от Google

Для определения местоположения пользователей в современных браузерах есть поддержка геолокации в виде объекта navigator.geolocation. У данного объекта есть два метода getCurrentPosition() и watchPosition(). Пример использования метода navigator.geolocation.getCurrentPosition() приведен ниже.

/* Определение текущих координат с помощью технологии
 * Geolocation (GNSS, WiFi, CellID, IP) и Yandex.API
 */
  function getPosition() {
    if(navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(
        // Пытаемся определить текущие координаты
        googleAPI,
        // Иначе, определяем координаты центра города по IP-адресу с помощью Яндекс.API
        yandexAPI,
        // Параметры
        {
          enableHighAccuracy: true,      // Режим высокой точности
          timeout: 27000,                // Максиальное время ожидания ответа (в миллисекундах)
          maximumAge: 0                  // Максимальное время жизни полученных данных
        }
      );
    }
    else {
      yandexAPI();
    }
    // Устанавливаем таймер вызова этого же метода через 30 секунд
    setTimeout("getPosition()", 30000);
  }


/* Определяем координаты с помощью Google.API
 */
  function googleAPI(position) {
    alert(position.coords.latitude+", "+position.coords.longitude);
  }


/* Определяем координаты с помощью Yandex.API
 */
  function yandexAPI(error) {
    alert(ymaps.geolocation.latitude+", "+ymaps.geolocation.longitude);
  }
В этом примере информация о местоположении обновляется каждые 30 секунд, при этом каждый раз данные от Google запрашиваются заново и ожидаются в течении 27 секунд.

Первый тест работы геолокации

При использовании геолокации в интернет-проекте сразу же возникает вопрос о точности определения координат. Именно этим мы сейчас и займемся. Проведем для этого небольшой эксперимент. Для этого создадим сайт, содержащий JavaScript, который будет с заданной частотой опрашивать определять координаты двух устройств: первое - ноутбук с включенным адаптером WiFi, подключенный к сети Интернет через GPRS/3G-модем, второе - смартфон с выключенным GPS-приемником и включенной поддержкой навигации в сотовых сетях GSM и/или по точкам доступа WiFi, подключенный к сети Интернет также через GPRS/3G-модем. Таким образом, имеем возможность оценить точность навигации только по точкам доступа WiFi и с учетом данных сотовой сети GSM. Итак, поместим все устройства в автомобиль и провезем их по дорогам Санкт-Петербурга. Оборудования оказалось не много, все уместилось на переднем пассажирском сиденье.


Рис. 1. Внешний вид экспериментальной установки

Длина маршрута составляет 15 км, начало в спальных районах Санкт-Петербурга на Гражданке, окончание - гидрометеорологический университет на набережной, напротив Александро-Невской Лавры. Результаты последовательных измерений местоположения каждые 30 секунд соединены прямыми линиями: синяя - WiFi, красная WiFi/GSM.


Рис. 2. Данные тестирования геолокации в сотовых сетях GSM и/или по точкам доступа WiFi

Из полученных данных можно сделать предварительный вывод, что точность вполне удовлетворительная, по крайней мере отклонения от траектории не превышают 1000 метров. Как ни странно, но точность геолокации по WiFi/GSM хуже, чем по WiFi. Это хорошо видно по скачкам красной трактории от одной базовой станции к другой.
Однако, для количественной оценки точности необходимо привлечение третьего источника данных о местоположении, определенного по радиосигналам ГЛОНАСС/GPS. При этом координаты должны определяеться без использования геолокации от Google. Это связано с тем, что использование метода navigator.geolocation.getCurrentPosition() при включенном ГЛОНАСС/GPS-приемнике и модуле WiFi улучшает точность геолокации по точкам доступа WiFi и тем самым влияет на результаты оценки точности (точность оказывается всегда лучше, чем в тех местах где нас еще не было).
Православное радио "Воскресенье"   Валаамский монастырь   Медиа-сервер "Россия Православная"   Интернет-магазин "ЛинуксЦентр"   Яндекс цитирования   Valid CSS!   Valid XHTML 1.0 Strict!   Unicode Encoded Badge