Построение мультимаршрута на общественном транспорте
Для того чтобы построить маршрут на общественном транспорте, необходимо передать в параметрах маршрутизации поле routingMode: 'masstransit'. По умолчанию при создании мультимаршрута данное поле принимает значение 'auto' (на автомобиле).
Подробнее о параметрах и опциях мультимаршрутизатора описано в примере Построение автомобильного мультимаршрута.
index.html
multiroute_masstransit.js
<!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&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);