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

Open in CodeSandbox

Для того чтобы построить маршрут на общественном транспорте, необходимо передать в параметрах маршрутизации поле routingMode: 'masstransit'. По умолчанию при создании мультимаршрута данное поле принимает значение 'auto' (на автомобиле).

Подробнее о параметрах и опциях мультимаршрутизатора описано в примере Построение автомобильного мультимаршрута.

<!DOCTYPE html>

<html>
    <head>
        <title>Построение мультимаршрута на общественном транспорте</title>
        <meta
            http-equiv="Content-Type"
            content="text/html; charset=utf-8"
        />
        <!--
        Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
        Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
    -->
        <script
            src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>"
            type="text/javascript"
        ></script>
        <script
            src="multiroute_masstransit.js"
            type="text/javascript"
        ></script>
        <style>
            html,
            body,
            #map {
                width: 100%;
                height: 100%;
                padding: 0;
                margin: 0;
            }
        </style>
    </head>

    <body>
        <div id="map"></div>
    </body>
</html>
function init() {
    /**
     * Создаем мультимаршрут.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
     */
    var multiRoute = new ymaps.multiRouter.MultiRoute(
        {
            referencePoints: [[55.749, 37.524], "Москва, Успенский пер. 7"],
            params: {
                routingMode: "masstransit",
            },
        },
        {
            // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
            boundsAutoApply: true,
        }
    );

    // Создаем кнопку.
    var changeLayoutButton = new ymaps.control.Button({
        data: { content: "Изменить макет подписи для пеших сегментов" },
        options: { selectOnClick: true },
    });

    // Объявляем обработчики для кнопки.
    changeLayoutButton.events.add("select", function () {
        multiRoute.options.set(
            // routeMarkerIconContentLayout - чтобы показывать время для всех сегментов.
            "routeWalkMarkerIconContentLayout",
            ymaps.templateLayoutFactory.createClass(
                "{{ properties.duration.text }}"
            )
        );
    });

    changeLayoutButton.events.add("deselect", function () {
        multiRoute.options.unset("routeWalkMarkerIconContentLayout");
    });

    // Создаем карту с добавленной на нее кнопкой.
    var myMap = new ymaps.Map(
        "map",
        {
            center: [55.739625, 37.5412],
            zoom: 12,
            controls: [changeLayoutButton],
        },
        {
            buttonMaxWidth: 350,
        }
    );

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

ymaps.ready(init);