我正在尝试在单击时将特征添加到图层上,但是我已经成功了,但是似乎在添加特征时其他功能被隐藏了吗?
我创建所需图层的各个部分...
public static highlightOverlay = new olLayerVector({});
public static highlightCollection: olCollection = new olCollection();
public static highlightVectorSource: olSourceVector = ({features:mapValues.highlightCollection})
我创建要素将显示在其上的图层
public static addHighlightOverlay(){
let highlightStyleCache = {};
mapValues.highlightVectorSource = new olSourceVector({
features: mapValues.highlightCollection
})
mapValues.highlightOverlay = new olLayerVector({
source: mapValues.highlightVectorSource,
map: mapValues.map,
style: function(feature,resolution){
let text = resolution * 100000 < 10 ? feature.get('text') : '';
if(!highlightStyleCache[text]){
highlightStyleCache[text] = new Style({
stroke: new Stroke({color: '#ffcc33', width:2}),
fill: new Fill({color: 'rgba(255,255,255,0.2'}),
text: new Text({
font: '12px Calibri,sans-serif',
text: text,
fill: new Fill({
color: '#000'
}),
stroke: new Stroke({
color: '#f00',
width: 3
}),
zIndex: 10000})
})
}
return highlightStyleCache[text]
}
})
mapValues.highlightOverlay.setMap(mapValues.map);
}
我将我的功能添加到集合
mapValues.highlightCollection.push(Feature1);
这将被添加,样式将显示为“功能1”,但是连续调用此功能将添加另一个功能...
mapValues.highlightCollection.push(Feature2);
Feature2将出现,Feature1将保留在集合中,但Feature1将丢失其样式或被隐藏...我不确定吗?
非常感谢您的帮助!