所以我试图像这样设置特征颜色,
addInteraction() {
this.style = new Style({
fill: new Fill({
color: this.fillColour,
}),
stroke: new Stroke({
color: this.lineColour,
width: 2
}),
image: new CircleStyle({
radius: 7,
fill: new Fill({
color: this.fillColour
}),
stroke: new Stroke({
color: this.lineColour
})
})
})
this.draw = new Draw({
source: this.vectorSource,
style: [this.style],
type: this.selectedShape,
})
this.coreMap.map.addInteraction(this.draw)
this.snap = new Snap({ source: this.vectorSource })
this.coreMap.map.addInteraction(this.snap);
this.coreMap.map.addInteraction(this.modifyLayer);
}
现在,当我绘制特征时,假设它是一个带有红线和蓝色填充的圆圈,它将在我绘制时显示一个带有红线和蓝色填充的圆圈,但是一旦绘制完成,它将默认为openlayers的默认颜色是浅蓝色。
如果我将样式应用于vectorLayer,它将继续存在,但是我希望要素保留颜色而不是图层,因为我希望在一层上具有多个颜色的多个要素,所以我尝试了几种不同的方法,例如设置可以使用简单的set方法在newDraw对象外部设置颜色,或者在没有幸运的情况下在draw对象内部使用样式函数设置样式。
答案 0 :(得分:0)
您可以直接将样式分配给功能。最好的时间和地点是drawend
侦听器:
draw.on('drawend', function(e) {
e.feature.setStyle(style);
});
因此,每当您完成绘制特征时,它就会获得其样式。