Openlayers在一层上有不同​​的颜色形状吗?

时间:2019-01-06 11:01:18

标签: angular openlayers

因此,我编写了代码,使我可以向地图添加形状,并且绘制函数如下所示

  addInteraction() {
    this.coreMap.map.addInteraction(this.modifyLayer);
    this.draw = new Draw({
      source: this.vectorSource,
      style: this.style,
      type: 'Point'
    });
    this.coreMap.map.addInteraction(this.draw);
    this.snap = new Snap({source: this.vectorSource});
    this.coreMap.map.addInteraction(this.snap);
  }

哪种方法可以让我在地图上画图,但是如果我尝试更改vectorLayer上的样式,让它从一个绿色的点变为一个红色的点,它将把每个点都变为红色,而不是新的点。已经尝试了几件事;

  • 尝试使用setStyle([styleOneOpts,styleTwoOpts])将新的样式对象推入vectorLayer.styles

  • 将Draw属性的style属性设置为其他值,这会将光标更改为所述颜色,但绘制点仍将是vectorLayers样式颜色

  • 试图创建一个新的Draw对象并将其作为对地图的全新交互添加

目前,我想每次要创建具有不同颜色的新形状时都必须创建一个新图层,这是很好的,如果无法解决,但希望它留在其中一层。

1 个答案:

答案 0 :(得分:1)

您可以在每个新创建的要素上设置样式,或者在每个要素上设置颜色属性,例如feature.set('color', 'red');,然后为图层使用样式功能。这将使用功能上设置的颜色,如果未设置则默认为黑色

style: function(feature) {
  return new Style({

    ...

      color: feature.get('color') || 'black',

   ...

  })
}