---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/examples/cases/multiroute_driving.md
  - https://yandex.com/dev/jsapi-v2-1/doc/ru/v2-1/examples/cases/multiroute_driving.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/jsapi-v2-1/doc/ru/llms.txt

# Построение автомобильного мультимаршрута

<iframe id="LIVE-EXAMPLE" style="width:100%;height: 400px;border-radius: 8px;border: 1px solid rgba(92, 94, 102, 0.14);" frameBorder="0" src="https://yastatic.net/s3/front-maps-static/maps-front-jsapi-v2-1/examples/2/out/s3-cases/ru/multiroute_driving/index.html" allow="fullscreen"></iframe>

<a target="_blank" rel="noopener noreferrer" style="display: inline-block;margin-top: 10px;cursor: pointer;border-radius: 4px;padding: 9px 12px;background: #151515;color: white;text-decoration: none;font-weight: 500" href="https://codesandbox.io/p/sandbox/9yygm9?file=index.html">Open in CodeSandbox</a>

<div id="references">
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/multiRouter.MultiRoute">multiRouter.MultiRoute</a>,
    <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/multiRouter.MultiRouteModel">multiRouter.MultiRouteModel</a>
</div>
<p>
    Мультимаршрутизатор позволяет по заданным точкам строить сразу несколько маршрутов.
</p>
<p>
    Для создания мультимаршрута используется класс <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/multiRouter.MultiRoute">multiRouter.MultiRoute</a>. В качестве его параметров передаются
    следующие объекты:</p>
<ul>
    <li><a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/multiRouter.MultiRouteModel">модель</a> мультимаршрута. Задается в качестве объекта с полями:
       <ul>
           <li>referencePoints - массив опорных точек маршрута. Обратите внимание, что если задано больше двух опорных точек,
               то маршрутизатор возвращает только один маршрут.</li>
           <li>params - параметры маршрутизации (например, тип маршрутизации, учет пробок и др.).</li>
       </ul></li>
    <li>опции маршрутизатора. В опциях задаются правила отображения маршрутов на карте.</li>
</ul>
<p>
    Все опорные точки маршрута делятся на путевые (wayPoint) и транзитные (viaPoint). Путевые точки - это точки, в которых необходимо сделать
    остановку, а транзитные - через которые нужно проложить маршрут без остановки.
</p>
<p>
    После того как все маршруты были построены, самый короткий из них автоматически становится активным. Такой маршрут отображается
    на карте фиолетовым цветом. Серые пунктирные линии обозначают
    пересадки с одного вида транспорта на другой или переход между станциями (для маршрута на общественном транспорте).<br/>
    Неактивные маршруты отображаются серым цветом. Для переключения
    активного маршрута достаточно кликнуть правой кнопкой мыши по нужному маршруту.
    Также переключить активный маршрут можно программно. См. <a href="https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/multiRouter.MultiRouteModel#methods-summary">multiRouter.MultiRouteModel#methods-summary</a>.
</p>

{% list tabs %}

-   index.html

    ```html
    <!DOCTYPE html>
    <html>
        <head>
            <title>Построение автомобильного мультимаршрута</title>
            <meta
                http-equiv="Content-Type"
                content="text/html; charset=utf-8"
            />
            <!--
            Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
            Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
        -->
            
            
            
        </head>

        <body>
            <div id="map"></div>
        </body>
    </html>
    ```

-   multiroute_driving.js

    ```js
    function init() {
        /**
         * Создаем мультимаршрут.
         * Первым аргументом передаем модель либо объект описания модели.
         * Вторым аргументом передаем опции отображения мультимаршрута.
         * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
         * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml
         */
        var multiRoute = new ymaps.multiRouter.MultiRoute(
            {
                // Описание опорных точек мультимаршрута.
                referencePoints: [
                    [55.734876, 37.59308],
                    "Москва, ул. Мясницкая",
                ],
                // Параметры маршрутизации.
                params: {
                    // Ограничение на максимальное количество маршрутов, возвращаемое маршрутизатором.
                    results: 2,
                },
            },
            {
                // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
                boundsAutoApply: true,
            }
        );

        // Создаем кнопки для управления мультимаршрутом.
        var trafficButton = new ymaps.control.Button({
                data: { content: "Учитывать пробки" },
                options: { selectOnClick: true },
            }),
            viaPointButton = new ymaps.control.Button({
                data: { content: "Добавить транзитную точку" },
                options: { selectOnClick: true },
            });

        // Объявляем обработчики для кнопок.
        trafficButton.events.add("select", function () {
            /**
             * Задаем параметры маршрутизации для модели мультимаршрута.
             * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml#setParams
             */
            multiRoute.model.setParams({ avoidTrafficJams: true }, true);
        });

        trafficButton.events.add("deselect", function () {
            multiRoute.model.setParams({ avoidTrafficJams: false }, true);
        });

        viaPointButton.events.add("select", function () {
            var referencePoints = multiRoute.model.getReferencePoints();
            referencePoints.splice(1, 0, "Москва, ул. Солянка, 7");
            /**
             * Добавляем транзитную точку в модель мультимаршрута.
             * Обратите внимание, что транзитные точки могут находится только
             * между двумя путевыми точками, т.е. не могут быть крайними точками маршрута.
             * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml#setReferencePoints
             */
            multiRoute.model.setReferencePoints(referencePoints, [1]);
        });

        viaPointButton.events.add("deselect", function () {
            var referencePoints = multiRoute.model.getReferencePoints();
            referencePoints.splice(1, 1);
            multiRoute.model.setReferencePoints(referencePoints, []);
        });

        // Создаем карту с добавленными на нее кнопками.
        var myMap = new ymaps.Map(
            "map",
            {
                center: [55.750625, 37.626],
                zoom: 7,
                controls: [trafficButton, viaPointButton],
            },
            {
                buttonMaxWidth: 300,
            }
        );

        // Добавляем мультимаршрут на карту.
        myMap.geoObjects.add(multiRoute);
    }

    ymaps.ready(init);
    ```

{% endlist %}
