В экосистеме HERE Technologies трафик реализован как многослойная система потоковых и статических данных, предназначенных для разных сценариев потребления: от визуализации на карте до аналитики маршрутов и прогнозирования времени прибытия.
Трафиковые данные в HERE делятся на три ключевых категории:
Каждый из этих типов данных может использоваться отдельно или в комбинации через JavaScript API.
В HERE Maps JS API (версии 3.x) трафик подключается как отдельный слой поверх базовой карты.
Основной объект — H.map.layer.TileLayer, который
использует провайдер трафиковых тайлов.
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(
document.getElementById('map'),
defaultLayers.vector.normal.map,
{
center: { lat: 52.52, lng: 13.405 },
zoom: 12,
pixelRatio: window.devicePixelRatio
}
);
const trafficLayer = platform.getTrafficService().createTrafficLayer();
map.addLayer(trafficLayer);
Трафиковый слой визуально накладывается поверх стандартной карты и отображает актуальную дорожную ситуацию.
Flow API предоставляет информацию о текущей скорости движения, свободности дорог и коэффициенте загруженности.
Каждый сегмент дороги содержит:
speed — текущая скоростьfreeFlow — скорость без пробокjamFactor — коэффициент загруженности (0–10)confidence — уровень достоверности данныхconst url = `https://data.traffic.hereapi.com/v7/flow?in=52.52,13.405;r=5000&apiKey=YOUR_API_KEY`;
fetch(url)
.then(response => response.json())
.then(data => {
console.log(data);
});
Параметр in определяет область запроса:
jamFactor является ключевым индикатором состояния
дороги:
Incidents API отвечает за события, влияющие на движение: аварии, перекрытия, ремонтные работы.
const incidentsUrl = `https://data.traffic.hereapi.com/v7/incidents?in=52.52,13.405;r=10000&apiKey=YOUR_API_KEY`;
fetch(incidentsUrl)
.then(res => res.json())
.then(data => {
console.log(data);
});
Инциденты классифицируются по категориям:
Каждый инцидент содержит:
Для отображения данных Flow и Incidents используется комбинированный подход: тайловый слой + динамические объекты.
function getColorByJamFactor(jamFactor) {
if (jamFactor < 2) return 'green';
if (jamFactor < 5) return 'yellow';
if (jamFactor < 7) return 'orange';
return 'red';
}
data.results.forEach(segment => {
const lineString = new H.geo.LineString();
segment.geometry.forEach(point => {
lineString.pushPoint({ lat: point.lat, lng: point.lng });
});
const polyline = new H.map.Polyline(lineString, {
style: {
strokeColor: getColorByJamFactor(segment.jamFactor),
lineWidth: 4
}
});
map.addObject(polyline);
});
HERE Traffic поддерживает обновление данных с интервалом от 30 секунд до нескольких минут в зависимости от региона.
setInterval(() => {
fetch(trafficUrl)
.then(res => res.json())
.then(updateMap);
}, 60000);
Интерактивные карты позволяют обновлять трафиковый слой в зависимости от области просмотра.
map.addEventListener('mapviewchangeend', function () {
const bounds = map.getViewModel().getLookAtData().bounds;
const trafficUrl = buildTrafficUrl(bounds);
fetch(trafficUrl)
.then(res => res.json())
.then(renderTraffic);
});
Traffic API позволяет ограничивать область выборки:
r)const url = `https://data.traffic.hereapi.com/v7/flow?in=bbox:52.3,13.1,52.6,13.6&apiKey=YOUR_API_KEY`;
Трафиковые данные напрямую влияют на расчет маршрутов через Routing API.
Основные параметры:
const router = platform.getRoutingService();
const params = {
routingMode: 'fast',
transportMode: 'car',
origin: '52.52,13.405',
destination: '52.50,13.30',
return: 'polyline,summary',
traffic: 'enabled'
};
При работе с большими картами важно минимизировать количество запросов:
Типовые сценарии ошибок:
Рекомендуется реализовать fallback-логику:
.catch(error => {
console.warn('Traffic data unavailable', error);
});
Типичный JSON-ответ содержит:
{
"results": [
{
"location": {
"geometry": "LINESTRING(...)"
},
"currentFlow": {
"speed": 45,
"freeFlow": 80,
"jamFactor": 3.2
}
}
]
}
Комбинированный анализ позволяет:
Логика объединения данных обычно строится на геопространственном пересечении:
Для продвинутых сценариев используется модель подписки:
Типовые применения:
Каждая из этих систем опирается на одинаковую базу Flow + Incidents, но различается способом агрегации и частотой обновления.