Как удалить рисунок в OpenLayers 5? - PullRequest
0 голосов
/ 24 февраля 2019

Я использую OpenLayers для создания карты, которая позволяет пользователю рисовать на ней.Варианты рисования реализованы из официальных документов и делают работу.https://openlayers.org/en/latest/examples/draw-features.html

Я попытался дать пользователю возможность удалить свой прежний рисунок.Удерживая клавишу «А», вы можете увидеть выбор пользователей.Теперь выбранные чертежи должны быть удалены в тот момент, когда ключ отпущен (но ничего не произошло).

var select = new Select();

window.addEventListener('keydown', function (event) {
    // A
    if (event.keyCode == 65) {
        map.addInteraction(select);
    }
});
window.addEventListener('keyup', function (event) {
    if (event.keyCode == 65) {
        var selectedFeatures = select.getFeatures();
        selectedFeatures.clear();
        map.removeInteraction(select);
    }
});

Чего мне не хватает?

1 Ответ

0 голосов
/ 25 февраля 2019

Поскольку мне не хватает репутации, чтобы оставить комментарий, я должен опубликовать это как ответ.Во-первых, keyCode является устаревшим , в настоящее время вы должны просто использовать event.key, что также делает код более понятным для вас, поскольку ключ просто "a".

Другая проблема заключается в том, что вы получаете выбранные объекты с помощью select.getFeatures (), который либо возвращает компонент или коллекцию (см. API ).Элемент не имеет метода clear, но вы можете получить слой и затем удалить выбранный элемент из его источника.Это может выглядеть примерно так:

var selectSource = select.getLayer(selectedFeature).getSource();
selectSource.removeFeature(selectedFeature);

это при условии, что вы выбираете одну функцию, в противном случае вы можете зациклить выбранные функции.

...