Más

Capa de color problemática de Ext y Openlayers

Capa de color problemática de Ext y Openlayers


Había simbolizado diferentes capas como puede ver aquí:

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

Funciona bien, pero el problema es cuando intento cambiar el color con Ext JS Library 3.4.0. El hecho es que con este tipo de capas son resultado de la operación de césped y los ext js no me permiten cambiar el color. Intento elegir un color diferente pero no funciona.

Código:

var cp = new Ext.ColorPalette ({valor: '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. estilos ["predeterminado"] = newStyle; layer.redraw ();

¿Alguna idea de cómo solucionarlo?


Esto debería funcionar: asignar un nuevo mapa de estilo y volver a dibujar:

var cp = new Ext.ColorPalette ({valor: '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/

u otro ejemplo con un estilo más dinámico:

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


Lo tengo:

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

Ver el vídeo: What is GeoServer?