Suite

Couche de couleur à problème Ext et Openlayers

Couche de couleur à problème Ext et Openlayers


J'avais symbolisé différentes couches comme vous pouvez le voir ici :

if (vector_layer.name == "Buffer"){ vector_layer.style = {fillColor: "blue", pointRadius: 7, fillOpacity: 0.3, strokeColor:"#F2F2F2"}; vector_layer.addFeatures(geojson_format.read(result.getData())); legend.loadLayer(vector_layer);

Cela fonctionne bien, mais le problème est lorsque j'essaie de changer la couleur avec Ext JS Library 3.4.0. Le fait est qu'avec ce type de calques, ce sont des résultats d'opérations sur le gazon et ext js ne me permettent pas de changer la couleur. J'essaie d'en choisir une autre couleur mais je ne travaille pas.

Code:

var cp = new Ext.ColorPalette({value:'993300', "renderTo" : cpid}); cp.on("select", function(palette, selColor){ console.log("selected: "+selColor); colorPicker.hide(); var newStyle = new OpenLayers.Style( {"fillColor" : "#"+ selColor, "strokeColor" :"#"+selColor, "fillOpacity" : 0.4, "strokeOpacity" : 1, "strokeWidth" : 1, "strokeLinecap" : "round", "pointRadius" : 6}); layer.styleMap. styles["default"] = newStyle;layer.redraw();

Une idée de comment le résoudre?


Cela devrait fonctionner : assigner un nouveau Stylemap et redessiner :

var cp = new Ext.ColorPalette({value:'993300', "renderTo" : cpid}); cp.on('select', function (palette, selColor) { var newStyle = new OpenLayers.Style({ "fillColor": "#" + selColor, "strokeColor": "#" + selColor, "fillOpacity": 0.4, "strokeOpacity": 1, "strokeWidth": 1, "strokeLinecap": "round", "pointRadius": 6 }); var sty = OpenLayers.Util.applyDefaults(newStyle, OpenLayers.Feature.Vector.style["default" ]); var sm = new OpenLayers.StyleMap({ 'default': sty, 'select': { strokeColor: "red", fillColor: "red" } }); vector_layer.styleMap = sm; vector_layer.redraw(); cp.hide(); });

http://jsfiddle.net/expedio/6jtf8m5o/

ou un autre exemple avec un style plus dynamique :

http://jsfiddle.net/expedio/nL1md65z/


J'ai compris:

if(nameAlgorithm == "Center"){ var myStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ fillColor: "blue", pointRadius: 7, fillOpacity: 0.3, strokeColor:"#F2F2F2" } ) }); var vector_layer = new OpenLayers.Layer.Vector("vector_layer",{ styleMap: myStyles }); }

Voir la vidéo: An Introduction to Mapbox