Навигация | Radar API | Обзор | 2GIS Documentation
Radar API

Обзор

Radar API позволяет вычислить местоположение устройства на основе информации об окружении: видимых устройством сотовых вышек и ближайших точек доступа Wi-Fi. Таким образом вы можете определить вероятные координаты устройства в условиях плохой работы GPS или его полного отсутствия. Для вычисления местоположения могут быть использованы следующие данные:

  • Информация о наблюдаемых точках доступа Wi-Fi.

    Количество точек доступа Wi-Fi сильнее всего влияет на точность позиционирования по сравнению с другими данными.

  • Информация о наблюдаемых сотовых вышках.

    При этом сотовые вышки стандарта LTE предпочтительнее базовых станций.

  • Данные о местоположении устройства, полученные от GNSS-приёмника.

    Данные о GNSS-позиции используются анонимизированно для улучшения точности работы всего сервиса Radar API.


На точность позиционирования влияют следующие факторы:

  • Объём данных: чем больше точек доступа Wi-Fi и сотовых вышек передано, тем выше точность;
  • Свежесть наблюдаемых данных: чем меньше времени прошло с момента последней видимости точки Wi-Fi или сотовой вышки, тем выше точность.

Radar API возвращает радиус и координаты центра круга, внутри которого с высокой вероятностью находится устройство.

Для доступа к API нужен специальный ключ. Чтобы его получить:

  1. Зарегистрируйтесь в личном кабинете Platform Manager.
  2. Создайте демо-ключ (если вы еще не пользовались продуктами 2ГИС) или запросите боевой ключ по ссылке для связи с менеджером на вкладке Ключи API.

В личном кабинете вы также можете:

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

Чтобы определить местоположение устройства, нужно отправить POST-запрос на endpoint https://radar.api.2gis.com/v1/geolocation. В строке запроса укажите ваш ключ API в качестве значения параметра key.

https://radar.api.2gis.com/v1/geolocation?key=API_KEY

Информацию об окружении и другие параметры нужно передать в виде JSON в теле запроса.

Например, чтобы получить местоположение устройства по информации об одной сотовой вышке, одной точке доступа Wi-Fi и GNSS-позиции, можно отправить следующий запрос:

curl --request POST \
 --url 'https://radar.api.2gis.com/v1/geolocation?key=API_KEY' \
 --header 'Content-Type: application/json' \
 --data '{
  "sessionUUID": "deea0dba-0000-41a1-a1b4-8b6fc342b07d",
  "captureTimestampUnix": 1628605467,
  "gnssLocation": {
    "latitude": 55.0302839,
    "longitude": 82.9231227,
    "horizontalAccuracyM": 6.228
  },
  "mobileNetwork": {
    "homeMobileCountryCode": 250,
    "homeMobileNetworkCode": 2,
    "cellTowers": [
      {
        "ageMs": 75002,
        "cellID": 138361350,
        "networkType": "lte",
        "locationAreaCode": 5401,
        "signalStrengthDBm": -101
      }
    ]
  },
  "wifiAccessPoints": [
    {
      "ageMs": 1000,
      "macAddress": "74:4d:28:2b:6c:32",
      "signalStrengthDBm": -75
    }
  ]
}'

Где:

  • gnssLocation содержит данные о GNSS-местоположении устройства: широте, долготе и точности позиционирования.
  • mobileNetwork содержит мобильный код страны, код мобильной сети и информацию о наблюдаемой в данный момент сотовой вышке: время с момента первого наблюдения, идентификатор, мощность сигнала и другие.
  • wifiAccessPoints содержит информацию о наблюдаемой в данный момент точке доступа Wi-Fi: время с момента первого наблюдения, MAC-адрес и мощность сигнала.

Информацию о каждом поле можно посмотреть в Справочнике API.

Запрос вернет объект, содержащий предсказание о местоположении: широта, долгота и радиус, в котором с вероятностью 68% находится устройство. Информацию о каждом поле можно посмотреть в Справочнике API.

{
    "statusCode": 200,
    "state": "geoposition_located",
    "location": {
        "longitude": 82.92399186193771,
        "latitude": 55.02973009154781,
        "accuracy": 100
    }
}