Я в настоящее время внедряю инструмент редактирования карты в openlayers и имею следующее требование:
Когда выбран элемент карты (Линия, Точка, Полигон), клавиша удаления на клавиатуре должна
- Удалить текущий элемент функции, находящийся в данный момент при наведении курсора мыши на один
- По умолчанию удаляется полный объект, когда узел не находится
Поведение по умолчанию для элемента Элемент управления OpenLayers Modify позволяет щелкать и удалять вершины, вызывая метод removePoint (), который удаляет последний нажатый узел. Мне бы хотелось, чтобы этот метод активировался и применялся только к узлу зависания, поэтому go измените условие для выбора удаляемого узла.
Вот некоторый код, чтобы дать вам представление о том, что я Я делаю, в настоящее время работает, только когда я явно нажимаю на узел, который я хочу удалить:
deleteHandler(evt) {
let features;
// Returns true if the removePoint() method successfully removes node.
// This function should remove hovered, not last clicked
if (this.modifyInteraction.removePoint()) {
return;
} else {
if (this.selectModify.getFeatures().getArray().length > 0) {
features = this.selectModify.getFeatures();
}
// Delete selected features using delete key
if (features) {
// Loop delete through selected features array
features.getArray().forEach((feature, i) => {
this.source.removeFeature(features.getArray()[i]);
});
features.clear();
// Prevent browser history back button action on IE 11
evt.stopPropagation();
evt.preventDefault();
}
}
}
Есть ли способ обнаружить зависший узел и удалить его?