Пытаюсь запретить некоторые перетаскивания вершин полигона.
И если с вершинами (Vertex) все просто:
polygon.editor.events.add
var vertexModel = e.get('vertexModel');
vertexModel.saveCoords = vertexModel.geometry.getCoordinates();
});
polygon.editor.events.add('vertexdragend', function(e) {
var vertexModel = e.get('vertexModel');
var ok = testVertex(vertexModel);
if(!ok) {
vertexModel.geometry.setCoordinates(vertexModel.saveCoords);
}
});
То с промежуточной вершиной (Edge) не пойму. Если использовать edgedragend, то координаты в случае необходимости отката ей не присвоить. Завязываться на beforeedgedrag? Но это слишком частая проверка, да и preventDefault почему-то не откатывает перетаскивание.
Поскольку в результате перетаскивания Edge появляется новый Vertex, попробовал завязаться на beforevertexadd, все бы хорошо. Помешать появлению vertex удается, но тогда в воздухе подвисает ни к чему не привязанный Edge, в том месте где закончили Drag. Придумал только вызывать stopEditing() и тут же startEditing(), но тогда полигон мелькает, а это не красиво.