因此,我编写了代码,使我可以向地图添加形状,并且绘制函数如下所示
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对象并将其作为对地图的全新交互添加
目前,我想每次要创建具有不同颜色的新形状时都必须创建一个新图层,这是很好的,如果无法解决,但希望它留在其中一层。
答案 0 :(得分:1)
您可以在每个新创建的要素上设置样式,或者在每个要素上设置颜色属性,例如feature.set('color', 'red');
,然后为图层使用样式功能。这将使用功能上设置的颜色,如果未设置则默认为黑色
style: function(feature) {
return new Style({
...
color: feature.get('color') || 'black',
...
})
}