我正在使用 OpenLayers 创建一个允许用户在其上绘图的 map 。 绘图选项是从官方文档中实现的并且可以工作。 https://openlayers.org/en/latest/examples/draw-features.html
我试图为用户提供删除他以前的绘图的选项。 按住“A”键您可以看到用户的选择。 现在,该选定的图形应该在松开按键的那一刻被删除(但什么也没发生)。
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);
}
});
我错过了什么?
最佳答案
由于我失去了发表评论的声誉,因此我必须将此作为答案发布。
首先,keyCode
是 deprecated ,现在您应该只使用 event.key
,这也使代码对您来说更清晰,因为键只是 "a"
。
另一个问题是,您通过 select.getFeatures() 获取选定的功能,它返回一个功能或一个集合(请参阅 API )。该要素没有 clear
方法,但您可以获取图层,然后从其源中删除所选要素。这可能看起来像这样:
var selectSource = select.getLayer(selectedFeature).getSource();
selectSource.removeFeature(selectedFeature);
这是假设您选择单个功能,否则您可以循环选择的功能。
关于javascript - 如何在 OpenLayers 5 中删除绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847127/