Клуб API Карт

Редактирование вершин ломаной 2.0 => 2.1

emil.utug
3 апреля, 13:29

При переходе с апи 2.0 на 2.1 сломалось часть функционала связанного с редактированием ломанной:

1) В режиме добавления новой вершины если навести/кликнуть на вершину текущей ломанной, то отобразится меню, а если навести/кликнуть на вершину другой ломанной, то произойдёт добавление точки.

Вот корректное поведение в версии 2.0

https://jsfiddle.net/g8jzzv5t/6/

1. Кликаем на начало или конец любой ломанной

2. Выбираем пункт меню "Продолжить"

3. Кликаем на начало или конец другой ломанной

4. Выбираем пункт "Завершить отрезок в этой точке"

Всё работает корректно: редактируемая ломанная завершается в этой точке

Вот некорректное поведение в версии 2.1

https://jsfiddle.net/g8jzzv5t/7/

1. Кликаем на начало или конец любой ломанной

2. Выбираем пункт меню "Продолжить"

3. Кликаем на начало или конец другой ломанной

4. Меню не появляется, а вершина ставится где-то рядом с другой вершиной

5. Если в режиме добавления кликнуть на другом конце текущей ломанной, то отобразится меню и можно будет выбрать пункт "Завершить отрезок в этой точке", т.е. всё отработает корректно

2) При кастомизации вершин ломанной через опцию editorVertexLayout пропадает функционал перетаскивания вершин (drag) и не отображается меню при клике на вершину

этот вопрос уже задавали тут

https://yandex.ru/blog/mapsapi/kastomizatsiya-vershin-redaktora

https://jsfiddle.net/jfoehhtL/8/

но ответ так и не был получен

5 комментариев
Подписаться на комментарии к посту
Добрый день. 
По первому пункту: Нужно использовать опцию https://tech.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/geometryEditor.LineString-docpage/#param-options.drawOver и пример https://jsfiddle.net/apnkqch4/
По второму пункту пример: https://jsfiddle.net/cnc1p0pr/
Сергей,
Можете ответить по второму пункту? См. ниже
emil.utug,
Добрый день. Вот пример https://jsfiddle.net/qum1460w/
Сергей,
Получилось, огромное спасибо!
использование недокументированной опции vertexIconShape делает опцию editorVertexLayout рабочей!!!
Спасибо. По первому пункту всё получилось.
По второму пункту остался вопрос.
Я так понимаю что такая конструкция полноценно не реализована:
editorVertexLayout: ymaps.templateLayoutFactory.createClass('<div class="point_type_$[properties.point_type]"></div>')



Мне это было необходимо для кастомизации каждой вершины. Т.е. я в настройках ломаной указывал


editorVertexLayout: ymaps.templateLayoutFactory.createClass('<div class="point_type_$[properties.point_type]"></div>')



а потом определял типы точек по своей бизнес логике


polyline.editor.getView().then(function(view){
var placemarks = view.getVertexPlacemarks();
for (var j = 0; j < placemarks.getLength(); j++) {
var pm = placemarks.get(j);
var point = getPoint(pm.properties.get("vertexModel").geometry.getCoordinates());
pm.properties.set("point_type", point.TYPE);
}
})


Можно ли кастомизировать отдельную вершину в вашем примере?