Встроить карту
Последнее обновление:
Открытый API возвращает шестиугольники, которые рисует карта, для последнего обновления или сохранённого дня, без исходных положений самолётов. Полная схема — в OpenAPI 3.1.
Встраивание карты
Карту онлайн можно встраивать бесплатно. Вставьте этот код туда, где она должна появиться:
Подходит для новостных сайтов, исследовательских проектов, блогов и учебных страниц, которым нужна актуальная карта, на которую можно ссылаться, без её разработки.
<iframe src="https://gpsinterference.com/embed" width="640" height="400"
style="border:0;width:100%;max-width:960px" loading="lazy"
title="Live GPS interference map"></iframe>
<p>Live map: <a href="https://gpsinterference.com/">GPS Interference</a></p>Настройте её ниже и скопируйте код или добавьте параметры самостоятельно.
Параметры
Добавьте любые из них к https://gpsinterference.com/embed, соединяя через &:
| Параметр | Значения | Что делает |
|---|---|---|
region | baltic-sea, eastern-europe, black-sea, eastern-mediterranean, middle-east, east-asia, south-southeast-asia, africa, americas, finland, estonia, latvia, lithuania, kaliningrad, poland, norway, romania, turkey, cyprus, israel, lebanon, south-korea, north-korea, japan, china, taiwan, philippines, vietnam, south-africa, morocco, algeria, kenya, senegal, tunisia, botswana, india, pakistan, myanmar, thailand, cambodia, malaysia, singapore, indonesia, sweden, denmark, germany, iceland, united-kingdom, ukraine, belarus, moldova, bulgaria, georgia, armenia, azerbaijan, greece, egypt, iran, iraq, syria, jordan, saudi-arabia, united-arab-emirates, qatar, austria, russia, persian-gulf, united-states, canada, mexico, cuba, venezuela, colombia, brazil, argentina, chile | Открывает этот регион, подогнанный под размер блока. |
bbox | юг,запад,север,восток | Открывает любой район, в градусах, например bbox=30,-120,40,-105. |
lat, lon, zoom | числа | Открывает заданные центр и масштаб вместо района. |
lock | 1 | Удерживает читателей в районе: внутри него можно перемещаться и менять масштаб, но покинуть его нельзя. |
style | satellite (по умолчанию), globe, dark, light, streets | Карта под шестиугольниками: тёмная, чистая светлая для белых страниц, улицы или спутник с границами и названиями мест. Карты MapTiler. |
lang | auto, en, no, uk, pl, tr, es, fr, de, ar, zh, he, ru | Язык текста карты: auto использует язык браузера читателя, либо укажите один код. Без параметра — английский. Страницы регионов используют свой язык. |
names | on, off (по умолчанию) | Названия мест на карте. |
alt | all (по умолчанию), low, mid, high, cruise | Показывает только самолёты в одном диапазоне высот: ниже 5000 футов, 5000–15 000 футов, 15 000–30 000 футов или выше 30 000 футов (барометрическая). За дни, сохранённые до начала записи высот, показаны все самолёты. |
date | ГГГГ-ММ-ДД | Показывает сохранённый день вместо последней карты, для материала об этом дне. |
Последнее окно
GET https://api.gpsinterference.com/v1/interference/latest
GET https://api.gpsinterference.com/interference.json — тот же документ, который использует карта. В нём один день полётов UTC, history_date, и он перестраивается раз в день примерно в 05:00 UTC.
Один день UTC
GET https://api.gpsinterference.com/v1/interference/YYYY-MM-DD
Карта на момент последнего обновления этого дня UTC (а не подсчёт только полётов этой даты), с теми же полями, что и последняя сводка, плюс archive_date и complete. complete равно false, пока этот день ещё идёт и может быть заменён; завершённый день никогда не меняется. Дата без сохранённой карты возвращает 404 и {"error":"no archive"}.
GET https://api.gpsinterference.com/v1/interference/days перечисляет все сохранённые дни: date, updated и hexes (количество), без полигонов.
Поля шестиугольника
| Поле | Значение |
|---|---|
h | Идентификатор ячейки, column_row на сетке шестиугольников Web Mercator. |
g | Разные самолёты в ячейке, чей NACp оставался выше 7. |
b | Разные самолёты, хотя бы раз сообщившие в ячейке NACp 7 или ниже. |
p | Затронутая доля в процентах с одним знаком после запятой: 100 × b ÷ (g + b). По ней определяется цвет. |
c | g менее 3%, y от 3% до 10%, r от 10% и не менее 2 затронутых самолётов, p более 50% и не менее 12 затронутых самолётов; берётся из округлённого p. |
poly | Кольцо пар [широта, долгота] в градусах. |
Ячейки — шестиугольники с плоской вершиной на сетке Web Mercator с радиусом 0,34° по долготе (около 38 км от центра до угла на экваторе, 22 км на 54° с. ш.). Ячейки с менее чем 3 самолётами не включаются.
bands (сводки с 26 октября 2026 года) разбивает те же подсчёты по барометрической высоте: edges_ft равно [5000, 15000, 30000], а hexes содержит четыре списка: ниже 5000 футов, 5000–15 000 футов, 15 000–30 000 футов и выше 30 000 футов. Каждая запись — { h, g, b }, а полигон и доля берутся из шестиугольника с тем же h в основном списке (p = 100 × b ÷ (g + b), те же пороги для c). Диапазон не включает ячейки с менее чем 3 самолётами в этом диапазоне. Самолёт, сменивший диапазон внутри ячейки, учитывается в каждом, поэтому сумма четырёх диапазонов не совпадает с основными подсчётами; самолёты на земле или без высоты учитываются только в основных подсчётах.
Поля верхнего уровня: history_date — день UTC, в который были полёты; updated — время записи сводки (UTC); grid — mercator-r0.34; window_minutes — 1440, один день; sources — adsb.lol-globe-history плюс выпуск adsb.lol, из которого она построена, например adsb.lol-prod-0. В сводках, сохранённых до 26 октября 2026 года, может не быть history_date и могут быть polled_points, grid_points и failed_points от прежнего сбора в реальном времени.
Кэширование, CORS и ограничения
Последняя сводка, сегодняшний сохранённый день и индекс дат отправляются с cache-control: public, max-age=60. Завершённый день отправляется с max-age=86400.
CORS в браузере разрешён только для https://gpsinterference.com и https://www.gpsinterference.com, поэтому другой сайт не может читать JSON из браузеров своих посетителей; на curl и серверные запросы это не влияет. Фиксированного ограничения частоты нет, но очень частые запросы могут замедляться. Данные меняются раз в день, поэтому следуйте заголовкам кэша, а не опрашивайте постоянно.
Указание источника
Данные о самолётах: история globe с adsb.lol по лицензии Open Database License (ODbL). Ссылайтесь на https://gpsinterference.com. Низкая заявленная точность — это не подтверждённое глушение, и она не указывает на источник. Фрагменты базовой карты отдельны и не входят в этот API.
Цитирование данных
Указывайте сохранённый день, который вы использовали: последняя карта меняется каждый день, а сохранённый день нет.
APA
GPSInterference.com. (2026). GPS interference hexagon data [Data set]. https://gpsinterference.com/docsОдин сохранённый день:
GPSInterference.com. (2026). GPS interference hexagon data, 25 October 2026 [Data set]. https://api.gpsinterference.com/v1/interference/2026-10-25BibTeX
@dataset{gpsinterference_2026,
author = {{GPSInterference.com}},
title = {GPS Interference Hexagon Data},
year = {2026},
publisher = {GPSInterference.com},
url = {https://gpsinterference.com/docs},
note = {Built from ADS-B flight tracks from adsb.lol globe history, available under the Open Database License (ODbL). Low reported accuracy (NACp 7 or lower) is not confirmed jamming. For one UTC day, use https://api.gpsinterference.com/v1/interference/YYYY-MM-DD}
}Примеры
curl -sS "https://api.gpsinterference.com/v1/interference/latest"
curl -sS "https://api.gpsinterference.com/v1/interference/2026-10-25"
На JavaScript, на этом сайте или на сервере:
const res = await fetch("https://api.gpsinterference.com/v1/interference/latest");
if (!res.ok) throw new Error(String(res.status));
const data = await res.json();
// data.hexes[i] is { h, g, b, p, c, poly }
О том, как делаются подсчёты, рассказывает методология.
