Навигация | Routing API | Обзор | 2GIS Documentation
Routing APInew

Обзор

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.