2012-12-27 64 views
1

在OpenLayers中,我試圖覆蓋所有點樣式渲染意圖(默認,選擇和臨時)的點半徑。目前,我這樣做:OpenLayers覆蓋所有渲染意圖的點半徑

var styleMap = new OpenLayers.StyleMap({ 
    "default": OpenLayers.Util.applyDefaults({pointRadius: radius},OpenLayers.Feature.Vector.style['default']), 
    "select": OpenLayers.Util.applyDefaults({pointRadius: radius},OpenLayers.Feature.Vector.style['select']), 
    "temporary": OpenLayers.Util.applyDefaults({pointRadius: radius},OpenLayers.Feature.Vector.style['temporary']) 
}); 

好像應該有一個辦法,只是說來覆蓋所有這些點半徑,但我無法弄清楚如何做到這一點。我希望默認情況下點半徑是從默認值繼承到select和temporary,但是如果我在默認情況下覆蓋它(不重寫select和temporary中的任何內容),它們將使用原始的默認點大小。

+0

你有沒有在這之後調用'vectorLayer.redraw();'? – capdragon

回答

0

嘗試之後致電vectorLayer.redraw();

+0

問題不在於它正在重繪,而只是看起來像很多代碼來覆蓋所有3個渲染意圖的一個屬性。我只是想知道是否有辦法簡化這段代碼。對不起,如果我不清楚。 –

+0

我明白了。那麼,如果將新的'styleMap'應用於矢量圖層並重新繪製,則應該爲該矢量圖層中的所有要素應用新樣式。你只將它應用於單一特徵而不是整個圖層? – capdragon

+0

它的確如我所期望的那樣工作。我想要做的是基本上只設置一次pointRadius屬性,而不必將其設置爲默認值,選擇和臨時值。 –