2016-09-16 2 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]; 
         } 

... Мне нужно, чтобы быть в состоянии пойти и изменить заливку, инсульт и т.д. ... после рендеринга, я был ограничен " успех "... если это то, что вы хотите назвать ... делая все черным черты.

Любая помощь очень ценится !!

+0

Вы используете 'ol.interaction.Select'? –

+0

Я только не для этой проблемы ... У меня есть векторные функции на карте, я создаю стиль из данных, загружаемых из базы данных. Я хочу, чтобы пользователь смог изменить цвет, непрозрачность, штрих линии до того, что они захотят после того, как функции были отображены. Может ли ol.interaction.Select помочь с этим? –

+0

В этом случае у вас будет внешний контроль, где ваш пользователь может изменить эти настройки. Можете ли вы поместить это в скрипку? –

ответ

0

Благодаря @Jonatas Walker с вашей помощью я оказался с этим ...

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); 

, применяющее стиль !!

Смежные вопросы