2017-08-16 273 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觸發的。