单击“ OpenLayers 5 Typescript”将多个功能添加到矢量层

时间:2019-05-16 18:34:12

标签: openlayers openlayers-3 openlayers-5

我正在尝试在单击时将特征添加到图层上,但是我已经成功了,但是似乎在添加特征时其他功能被隐藏了吗?

我创建所需图层的各个部分...

    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将丢失其样式或被隐藏...我不确定吗?

非常感谢您的帮助!

0 个答案:

没有答案