ですから、常に明るいオレンジ色のデフォルトの正多角形を見るのにうんざりして、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を明示的に設定する必要があると思いました...サイコロはありません。両方の塗りつぶしの色をそれぞれピンクと青に変更しても、オレンジと不透明な黒しか見えませんでした。
スタイルマップをいじってみました。スタイルマップにスタイルを1つだけ追加すると、一時的なスタイルを含むすべてにデフォルトのスタイルが使用されることを読みました。
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});
不透明な正方形はありませんが、一時的なサイコロもありません...それでもオレンジは黒の透明にスナップします。新しいスタイル(layer_style2)を作成し、それに一時的に設定しても、運がありません。また、「選択」スタイルを設定しても運がありません。
私は何が間違っているのですか?現在スケッチされているものをスタイリングするための一時的なISですよね?drawFeatureコントローラーに固有の方法は他にありますか?
編集:extendDefaultをtrueに設定しても、役に立たないようです...
var style_map = new OpenLayers.StyleMap({"default": layer_style, "temporary": layer_style}, {"extendDefault": "true"});