gpt4 book ai didi

openlayers - 如何按名称删除图层 - openlayers 3

转载 作者:行者123 更新时间:2023-12-04 22:18:38 33 4
gpt4 key购买 nike

我是用 wkt 添加矢量图层的使用以下代码映射的源:

var SelectVector = null;

for (var i = 0; i < wktarray.length; i++) {
var wkt = wktarray[i];
var format = new ol.format.WKT();
var feature = format.readFeature(wkt, {
dataProjection: 'EPSG:4326',
featureProjection: 'EPSG:4326'
});
SelectVector = new ol.layer.Vector({
source: new ol.source.Vector({
features: [feature]
}),
style: new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.2)'
}),
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),
image: new ol.style.Circle({
radius: 7,
fill: new ol.style.Fill({
color: '#ffcc33'
})
})
})
});
map.addLayer(SelectVector);
SelectVector.set('name', 'selectvector');
}

现在,我想从 map 中删除这个矢量图层。写在下面的代码但是,它没有删除所有层 selectvector姓名。
map.getLayers().forEach(function (layer) {
if (layer.get('name') != undefined & layer.get('name') === 'selectvector') {
map.removeLayer(layer);
}
});

怎么了?

最佳答案

我认为问题在于 removeLayer 更改了您正在骑自行车的同一个集合。

尝试这样的事情

var layersToRemove = [];
map.getLayers().forEach(function (layer) {
if (layer.get('name') != undefined && layer.get('name') === 'selectvector') {
layersToRemove.push(layer);
}
});

var len = layersToRemove.length;
for(var i = 0; i < len; i++) {
map.removeLayer(layersToRemove[i]);
}

另请注意,您的 if 条件中缺少“&”。

关于openlayers - 如何按名称删除图层 - openlayers 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46785459/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com