В основе маршрутизации в HERE Technologies лежит разделение на клиентскую визуализацию и серверный расчёт маршрута. JavaScript SDK для карт отвечает за отображение и интерактивность, тогда как построение маршрутов выполняется через Routing API v8.
В контексте HERE Maps API for JavaScript (Maps API for JavaScript) маршруты можно разделить на:
Custom Routes представляют собой конфигурацию параметров маршрутизации, позволяющую управлять логикой построения пути: избегание дорог, предпочтения типов трасс, ограничения по весу, высоте, стоимости и даже пользовательские ограничения через геозоны.
Процесс формирования кастомного маршрута всегда включает три этапа:
Пример базовой структуры запроса:
const routingService = platform.getRoutingService(null, 8);
const routingParameters = {
transportMode: 'car',
origin: '52.5160,13.3779',
destination: '52.5206,13.3862',
return: 'polyline,summary',
routingMode: 'fast'
};
Даже в базовом виде уже задаётся логика маршрута, но кастомизация раскрывается через дополнительные параметры.
Позволяет исключить определённые элементы дорожной сети:
Пример:
routingParameters.avoid = {
features: ['tollRoad', 'motorway']
};
Такая настройка используется для сценариев экономии или специфики транспорта.
HERE Routing API поддерживает специализированные режимы:
cartruckpedestrianbicycleДля грузового транспорта добавляются дополнительные ограничения:
routingParameters.transportMode = 'truck';
routingParameters.vehicle = {
weight: 12000,
height: 4.0,
length: 12.0,
tunnelCategory: 'B'
};
Это критично для логистических систем, где несоответствие параметров приводит к невозможности прохождения маршрута.
Параметр routingMode определяет стратегию построения
пути:
fast — минимальное времяshort — минимальная длинаbalanced — баланс времени и расстоянияПример:
routingParameters.routingMode = 'balanced';
Кастомизация не ограничивается параметрами поиска — можно управлять детализацией геометрии:
routingParameters.return = 'polyline,actions,instructions';
polyline — геометрия маршрутаactions — манёврыinstructions — текстовые подсказкиЭто используется в навигационных приложениях и системах визуального сопровождения.
Пример полноценного запроса с кастомизацией:
const router = platform.getRoutingService(null, 8);
const params = {
transportMode: 'car',
origin: '52.5160,13.3779',
destination: '52.5206,13.3862',
routingMode: 'fast',
return: 'polyline,summary,instructions',
avoid: {
features: ['ferry']
}
};
router.calculateRoute(params, result => {
const route = result.routes[0];
const lineString = H.geo.LineString.fromFlexiblePolyline(
route.sections[0].polyline
);
const routeLine = new H.map.Polyline(lineString, {
style: { strokeColor: 'blue', lineWidth: 4 }
});
map.addObject(routeLine);
});
Custom Routes часто включают сложные маршруты с несколькими остановками:
const params = {
transportMode: 'car',
origin: '52.5160,13.3779',
destination: '52.5206,13.3862',
via: new H.service.Url.MultiValueQueryParameter([
'52.5175,13.3800',
'52.5185,13.3820'
])
};
Такая конфигурация применяется в:
Расширенная кастомизация включает работу с географическими ограничениями.
Хотя Routing API не всегда напрямую поддерживает пользовательские полигоны, можно эмулировать ограничения через:
Пример логики исключения зоны:
routingParameters.avoid = {
areas: [
{
type: 'boundingBox',
north: 52.53,
south: 52.51,
east: 13.40,
west: 13.35
}
]
};
При работе с большим количеством точек возникает задача оптимизации порядка посещения.
HERE Routing API предоставляет поддержку:
Пример использования оптимизации:
const params = {
transportMode: 'car',
origin: '52.5160,13.3779',
destination: '52.5206,13.3862',
via: H.service.Url.MultiValueQueryParameter([
'52.5175,13.3800',
'52.5185,13.3820',
'52.5190,13.3840'
]),
optimizeWaypoints: true
};
Custom Routes часто требуют не одного, а нескольких вариантов пути:
routingParameters.alternatives = 3;
Каждый маршрут может отличаться:
Это используется в навигационных интерфейсах для выбора пользователем.
Одной из ключевых особенностей маршрутизации в экосистеме HERE Technologies является интеграция live traffic data.
Параметр:
routingParameters.departureTime = new Date();
позволяет учитывать:
При этом маршруты становятся динамическими и изменяются в зависимости от времени суток.
Маршрут возвращается в виде закодированной полилинии:
const lineString = H.geo.LineString.fromFlexiblePolyline(polyline);
Декодированная геометрия используется для:
После получения маршрута он интегрируется в карту через объекты слоя:
map.addObject(routeLine);
map.getViewModel().setLookAtData({
bounds: routeLine.getBoundingBox()
});
Это позволяет автоматически адаптировать масштаб под маршрут.
Custom Routes в HERE Maps API формируются на нескольких уровнях:
Такая модель делает маршрутизацию гибкой системой, способной адаптироваться под бизнес-логики различной сложности — от навигации до логистических платформ и аналитических систем перемещения.