因此,我總是看到明亮的橙色默認正規多邊形,我試圖學習如何設計OpenLayers。OpenLayers樣式問題
我已經取得了一些成功:
var layer_style = OpenLayers.Util.extend({},OpenLayers.Feature.Vector.style['default']);
layer_style.fillColor = "#000000";
layer_style.strokeColor = "#000000";
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = layer_style;
但正弦我畫我的DrawFeature多邊形,我的風格只能生效一次,我已經完成了繪圖,並看到它明亮的橙色捕捉到灰有點令人不安。所以,我學到了臨時的風格,並嘗試:
var layer_style = new OpenLayers.Style({"default": {fillColor: "#000000"}, "temporary": {fillColor: "#000000"}})
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = layer_style;
這讓我一個橙色的正方形 - 直到我停下來繪製,當它咬合到完全不透明的黑色。我想,也許我必須明確地設置fillOpacity ...沒有骰子。即使當我將兩種填充顏色分別改爲粉色和藍色時,我仍然只看到橙色和不透明的黑色。
我試過搞亂StyleMaps,因爲我讀過如果你只添加一種樣式到樣式映射中,它使用默認的樣式,包括臨時樣式。
var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
var style_map = new OpenLayers.StyleMap(layer_style);
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = style_map;
這讓我也是黑色不透明的廣場。 (即使沒有提供給地圖的圖層樣式也適用)。像這樣將地圖傳遞到圖層本身:
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer", style_map);
沒有得到任何東西。即使在繪製之後,仍然是橙色的。
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer", {styleMap: style_map});
更多的成功:繪製時橙色,繪製時呈黑色輪廓的半透明黑色。就像我沒有使用地圖一樣。問題是,仍然沒有臨時...
所以,我想我的初始化地圖是這樣的:
var style_map = new OpenLayers.StyleMap({"default": layer_style, "temporary": layer_style});
沒有不透明的方形,但暫時沒有骰子,要麼...橙色的捕捉到黑透明。即使我製作了一個新的Style(layer_style2),並將其設置爲臨時,仍然沒有運氣。並沒有設置「選擇」風格的運氣,無論是。
我在做什麼錯?爲當前正在繪製的東西造型的臨時IS是正確的?是否有其他特定於drawFeature控制器的方式?
編輯:設置extendDefault是真實的似乎並沒有幫助,要麼...
var style_map = new OpenLayers.StyleMap({"default": layer_style, "temporary": layer_style}, {"extendDefault": "true"});
你,先生,是個天才。這讓我瘋狂!當我在drawFeature的處理程序選項中查找時,我沒有看到任何可以通過的「樣式」,所以我認爲這不是一種選擇......我所知道的只是「雙方:」選項,即使如此,我也找不到他們提到的API在哪裏。謝謝! – Jenny 2010-05-03 11:51:46
使用第一種解決方案,一旦通過雙擊確認了最終的多邊形,樣式就會重置爲默認的樣式,所以最後我仍然需要使用回調來重置樣式。 – 2012-11-02 11:52:25