В экосистеме геосервисов HERE Technologies ключевая задача маршрутизации заключается в вычислении не только геометрического пути между точками, но и параметров, имеющих прикладное значение: времени в пути, длины маршрута, стоимости перемещения и альтернативных вариантов проезда. В JavaScript SDK платформы HERE Maps API эти задачи решаются через Routing API и сопутствующие сервисы матричных расчётов и изохрон.
Расчёт времени и расстояния строится на графовой модели дорожной сети:
При построении маршрута учитываются:
Основной объект расчёта — маршрут (route), содержащий набор секций (sections), каждая из которых описывает отдельный участок движения.
В SDK HERE Maps API маршрутизация выполняется через модуль
H.service.RoutingService:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const routingService = platform.getRoutingService(null);
Для визуализации маршрута обычно используется слой карты, но сам расчёт времени и расстояния не зависит от отображения.
Базовый запрос включает:
const routingParameters = {
routingMode: 'fast',
transportMode: 'car',
origin: '52.5160,13.3779',
destination: '52.5206,13.3862',
return: 'polyline,summary'
};
routingService.calculateRoute(routingParameters, result => {
const route = result.routes[0];
const section = route.sections[0];
const summary = section.summary;
console.log('Distance (m):', summary.length);
console.log('Travel time (s):', summary.duration);
});
length — расстояние в метрахduration — время в секундахЭти значения уже учитывают дорожную сеть и профиль маршрута, а не прямую геометрию между точками.
Routing API поддерживает несколько стратегий оптимизации:
fast — минимизация времениshort — минимизация расстоянияbalanced — компромисс между временем и длинойПример:
routingMode: 'short'
Изменение режима напрямую влияет на итоговые значения времени и расстояния, так как алгоритм выбирает разные рёбра графа.
При включении параметра трафика маршрут становится динамическим:
routingMode: 'fast',
trafficMode: 'enabled'
В этом режиме:
Внутри ответа появляются два типа значений:
Каждый маршрут разбивается на секции:
route.sections.forEach(section => {
console.log(section.summary.length);
console.log(section.summary.duration);
});
Секции позволяют:
Помимо маршрутизации, часто требуется вычисление прямого расстояния между координатами.
В HERE Maps API это реализуется через геометрические утилиты:
const pointA = { lat: 52.5160, lng: 13.3779 };
const pointB = { lat: 52.5206, lng: 13.3862 };
const distance = H.geo.Point
.distance(pointA, pointB);
console.log(distance);
Такой расчёт:
Для анализа множества точек используется Matrix Routing API. Он позволяет вычислить:
Пример структуры запроса:
const matrixParams = {
origins: ['52.5160,13.3779', '52.5200,13.3700'],
destinations: ['52.5206,13.3862', '52.5155,13.3800'],
transportMode: 'car',
routingMode: 'fast'
};
Результат — матрица вида:
| D1 | D2 | |
|---|---|---|
| O1 | t1 | t2 |
| O2 | t3 | t4 |
Где значения t — время в секундах.
Матрицы используются для:
В реальных системах матричный расчёт часто является основой для алгоритмов оптимизации маршрутов.
Изохроны позволяют определить область, достижимую за заданное время.
В HERE Maps API используется параметр:
range — время в секундах или расстояниеПример:
const isolineParams = {
origin: '52.5160,13.3779',
transportMode: 'car',
range: 900, // 15 минут
rangetype: 'time'
};
Результат — полигон, ограничивающий зону доступности.
Изохрона позволяет определить:
При запросе альтернативных маршрутов API возвращает несколько вариантов:
alternatives: 3
Каждый маршрут содержит:
Сравнение выполняется по:
Разные типы транспорта дают разные результаты расчёта.
На итоговое время и расстояние влияют:
Даже при одинаковых координатах результат может существенно отличаться при изменении одного параметра.
Все операции выполняются асинхронно, что критично для UI-приложений:
routingService.calculateRoute(params, result => {
// обработка результата
});
Это позволяет:
В высоконагруженных системах часто применяется:
Это снижает нагрузку на API и ускоряет отклик интерфейса.
Расчёт времени и расстояния в HERE Maps API представляет собой многоуровневую систему:
Каждый уровень добавляет собственные параметры к итоговому результату, формируя точную модель перемещения в реальном мире.