2017-08-16 271 views
0

我想重新使用我的基本样式函数来通过覆盖某些属性来创建选择样式。 此方法适用于线条,多边形和文本的填充/描边颜色,但不适用于图像(我的情况为圆形)。 我不想创建一个新的图像,因为应保留其他属性。覆盖OpenLayers中选择的样式属性

var selectStyleFunction = function(feature, resolution) { 
    var style = styleFunction(feature, resolution)[0]; 
    style.getImage().getFill().setColor("magenta"); 

    console.log(style.getImage().getFill().getColor()); 

    return [style]; 
}; 

在此fiddle你可以看到,虽然日志输出是正确的,上面的代码不会改变选择的要素样式。

有什么办法可以覆盖这个属性吗?

+0

有一个关于此的讨论:https://github.com/openlayers/openlayers/issues/5775 –

+0

谢谢你的回答,但我不明白这个讨论与我的问题有关。据我了解,这是关于绘制圆圈的效率。 – anste

+0

正如你可以看到引用的问题https://github.com/openlayers/openlayers/issues/6233可能有某种信息。 –

回答

0

我在openlayers的api dokumentation中找到了我的问题的答案。首先找到它太明显了。

https://openlayers.org/en/latest/apidoc/ol.style.Style.html

ol.style.Style
集装箱为载体功能渲染样式。在使用样式的特征或图层被重新渲染之前,通过设置的*()方法对样式或其子对象进行的任何更改都不会生效。

所以渲染不是由setters触发的。