Обзор
Routing API поможет проложить один или несколько маршрутов на карте для транспорта или пешком.
Основные возможности
Типы возможных маршрутов:
- автомобильный,
- такси,
- пешеходный,
- велосипедный,
- грузовой транспорт,
- экстренные службы.
Построение маршрутов для экстренных служб доступно для регионов: Объединённые Арабские Эмираты, Оман и Саудовская Аравия.
Для каждого маршрута можно получить:
- Длину, время в пути и полную геометрию.
- Изменение высоты над уровнем моря на протяжении маршрута.
- Информацию о специальных точках на маршруте. Например, начало платного участка дороги.
Можно учесть следующие параметры при построении маршрутов в зависимости от выбранного типа транспорта:
- Пробки в реальном времени или прогнозируемые на основе статистических данных.
- Полосы общественного транспорта для такси и экстренных служб.
- Разные типы дорог.
- Пешеходные переходы, лестницы и обходы препятствий.
- Исключение определенной области.
- Масса, габариты и ограничения по знакам для грузового транспорта.
Больше информации о параметрах маршрутов в Справочнике API.
Ограничения
Промежуточные точки
- Построение маршрута с использованием промежуточных точек доступно только в границах агломерации города.
- До 10 точек с учётом конечной и начальной для автомобилей и грузового транспорта.
- До 5 точек с учётом конечной и начальной для пешего маршрута.
- Для велосипедного маршрута не поддерживается построение с промежуточными точками.
Грузовой транспорт
Построение маршрутов для грузового транспорта доступно в следующих странах:
- Азербайджан,
- Беларусь,
- Казахстан,
- Кыргызстан,
- Узбекистан,
- Объединённые Арабские Эмираты,
- Оман,
- Россия,
- Саудовская Аравия,
- Украина.
Также при построении маршрута для грузового транспорта можно исключить только грунтовые и платные дороги.
Пример работы
Чтобы ознакомиться с работой Routing API, воспользуйтесь интерактивным примером:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2GIS Navi API</title>
<meta name="description" content="Navi API directions example" />
<style>
html,
body,
#container {
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
#reset {
padding: 4px 10px;
background: #00a81f;
border-radius: 4px;
box-shadow: 0 1px 3px 0 rgba(38, 38, 38, 0.5);
border: none;
color: #fff;
font-size: 13px;
cursor: pointer;
}
#reset:disabled {
background: #f2f2f2;
color: #6e6d6d;
cursor: default;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="https://mapgl.2gis.com/api/js/v1"></script>
<script src="https://unpkg.com/@2gis/mapgl-directions@^2/dist/directions.js"></script>
<script>
const map = new mapgl.Map('container', {
center: [37.668598, 55.76259],
zoom: 13,
key: 'Your API access key',
});
const directions = new mapgl.Directions(map, {
// This key can be used for demo purpose only!
// You can get your own key on http://partner.api.2gis.ru/
directionsApiKey: 'Your directions API access key',
});
const markers = [];
let firstPoint;
let secondPoint;
// A current selecting point
let selecting = 'a';
const buttonText = ['Choose two points on the map', 'Reset points'];
const controlsHtml = `<button id="reset" disabled>${buttonText[0]}</button> `;
new mapgl.Control(map, controlsHtml, {
position: 'topLeft',
});
const resetButton = document.getElementById('reset');
resetButton.addEventListener('click', function() {
selecting = 'a';
firstPoint = undefined;
secondPoint = undefined;
directions.clear();
this.disabled = true;
this.textContent = buttonText[0];
});
map.on('click', (e) => {
const coords = e.lngLat;
if (selecting != 'end') {
// Just to visualize selected points, before the route is done
markers.push(
new mapgl.Marker(map, {
coordinates: coords,
icon: 'https://docs.2gis.com/img/dotMarker.svg',
}),
);
}
if (selecting === 'a') {
firstPoint = coords;
selecting = 'b';
} else if (selecting === 'b') {
secondPoint = coords;
selecting = 'end';
}
// If all points are selected — we can draw the route
if (firstPoint && secondPoint) {
directions.carRoute({
points: [firstPoint, secondPoint],
});
markers.forEach((m) => {
m.destroy();
});
resetButton.disabled = false;
resetButton.textContent = buttonText[1];
}
});
</script>
</body>
</html>
Чтобы отредактировать код примера, нажмите Source code и далее Edit on Codepen.
Что дальше?
- Быстрый старт.
- Примеры работы Routing API.
- Справочник API.