2016-09-16 20 views
1

ユーザーの選択ごとにレンダリングした後、マップ上にフィーチャーをスタイルする必要があります。このようなOpenLayers 3ダイナミックスタイリング

現在、私は追加していたスタイル...

style: function (feature, resolution) { 
          var text = resolution * 100000 < 10 ? response.text : ''; 

          if (text != "") { 
           styleCache[text] = [new ol.style.Style({ 
            stroke: new ol.style.Stroke({ 
             color: '#319FD3', 
             width: 1 
            }), 
            text: new ol.style.Text({ 
             font: '12px Calibri,sans-serif', 
             text: text, 
             fill: new ol.style.Fill({ 
              color: '#000' 
             }), 
             stroke: new ol.style.Stroke({ 
              color: '#fff', 
              width: 3 
             }) 
            }), 
            fill: new ol.style.Fill({ 
             color: colorFromDatabase 
            }) 
           })]; 
          } 
          else if (text == "") { 
           styleCache[text] = [new ol.style.Style({ 
            fill: new ol.style.Fill({ 
             color: colorFromDatabase 
            }) 
           }) 
           ] 
          } return styleCache[text]; 
         } 

...私は、私は「限られた持っていたで行くと塗りつぶし、ストローク、等...の後にレンダリングを変更できるようにする必要があります成功 "...それがあなたがそれを呼びたいと思ったら...すべての機能を黒くする。

何か助けていただければ幸いです。私はこれで終わったあなたの助けを借りてウォーカー@Jonatas

+0

あなたは 'ol.interaction.Select'を使用していますか? –

+0

私はこの問題ではありませんが...マップ上にベクター機能があり、データベースから読み込まれたデータからスタイルを作成します。私は、ユーザーが色、不透明度、線のストロークを、機能のレンダリング後に必要なものに変更できるようにしたいと考えています。 ol.interaction.Selectでそれを選択できますか? –

+0

この場合、ユーザーがこれらの設定を変更できる外部コントロールがあります。これをフィドルに入れることができますか? –

答えて

0

おかげで...スタイルを適用している

var source = webLayer.getSource(); 
               var features = source.getFeatures(); 


               var templateStyle = new ol.style.Style({ 
                fill: new ol.style.Fill({ color: convertHex(Layer.LayerStyle.FillColor, '0.5') }), 
                stroke: new ol.style.Stroke({ color: convertHex(Layer.LayerStyle.LineColor, '0.5') }), 
                text: new ol.style.Text({ 
                 font: '24px Verdana', 
                 text: webLayer.U.label, 
                 offsetY: 20, 
                 fill: new ol.style.Fill({ 
                  color: [255, 255, 255, 0.8] 
                 }) 
                }) 
               }); 


               var select = new ol.interaction.Select({ 
                style: templateStyle 
               }); 

               map.addInteraction(select);             webLayer.setVisible(Visibility); 
               features[0].setStyle(templateStyle); 

!!

関連する問題