Редактирование мультимаршрута
Ссылка на редактор маршрута находится в поле editor экземпляра класса multiRouter.MultiRoute.
Для включения/выключения режима редактирования мультимаршрута используются функции start() и stop() соответственно.
При включении режима редактирования функции start() могут быть переданы параметры редактирования. Список допустимых параметров приведен в комментариях в коде.
Обратите внимание, что параметры midPointsType (тип промежуточных точек, которые могут быть добавлены при редактировании) и drawOver (запрет на добавление точек поверх объектов карты) передаются в параметрах маршрутизатора с префиксом editor.
index.html
multiroute_edit.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_edit.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: ["Москва", "Тверь"],
},
{
// Тип промежуточных точек, которые могут быть добавлены при редактировании.
editorMidPointsType: "via",
// В режиме добавления новых путевых точек запрещаем ставить точки поверх объектов карты.
editorDrawOver: false,
}
);
var buttonEditor = new ymaps.control.Button({
data: { content: "Режим редактирования" },
});
buttonEditor.events.add("select", function () {
/**
* Включение режима редактирования.
* В качестве опций может быть передан объект с полями:
* addWayPoints - разрешает добавление новых путевых точек при клике на карту. Значение по умолчанию: false.
* dragWayPoints - разрешает перетаскивание уже существующих путевых точек. Значение по умолчанию: true.
* removeWayPoints - разрешает удаление путевых точек при двойном клике по ним. Значение по умолчанию: false.
* dragViaPoints - разрешает перетаскивание уже существующих транзитных точек. Значение по умолчанию: true.
* removeViaPoints - разрешает удаление транзитных точек при двойном клике по ним. Значение по умолчанию: true.
* addMidPoints - разрешает добавление промежуточных транзитных или путевых точек посредством перетаскивания маркера, появляющегося при наведении курсора мыши на активный маршрут. Тип добавляемых точек задается опцией midPointsType. Значение по умолчанию: true
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml#editor
*/
multiRoute.editor.start({
addWayPoints: true,
removeWayPoints: true,
});
});
buttonEditor.events.add("deselect", function () {
// Выключение режима редактирования.
multiRoute.editor.stop();
});
// Создаем карту с добавленной на нее кнопкой.
var myMap = new ymaps.Map(
"map",
{
center: [56.399625, 36.7112],
zoom: 7,
controls: [buttonEditor],
},
{
buttonMaxWidth: 300,
}
);
// Добавляем мультимаршрут на карту.
myMap.geoObjects.add(multiRoute);
}
ymaps.ready(init);