代码之家  ›  专栏  ›  技术社区  ›  Munerz

在一层上打开不同颜色的形状?

  •  2
  • Munerz  · 技术社区  · 6 年前

    所以我编写了代码,允许我向地图中添加形状,draw函数如下所示

      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);
      }
    

    这很好,让我画上地图等,但如果我尝试改变矢量图层上的样式,让我们说,从一个绿色点到一个红色点,它会改变每个点,而不是新的,我已经尝试了一些事情;

    • 尝试使用setStyle将新的Styles对象推入vectorlayer.Styles([StyleOneOpts,StyleTwoopts])

    • 将Draw属性的Style属性设置为不同的值,这会将光标更改为所述颜色,但绘制点仍将是Vectorlayers样式颜色。

    • 尝试创建一个新的绘图对象,并将其作为一个全新的交互添加到地图中

    现在我假设每次我想用不同的颜色创造一个新的形状时,我都必须创造一个新的图层,如果周围没有办法,这很好,但是我更希望它保持在一个图层内。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mike    6 年前

    您可以为每个新创建的特征设置样式,或者为每个特征设置颜色属性,例如 feature.set('color', 'red'); 并对层使用样式函数。这将使用功能上设置的颜色,或者如果未设置颜色,则默认为黑色。

    style: function(feature) {
      return new Style({
    
        ...
    
          color: feature.get('color') || 'black',
    
       ...
    
      })
    }