Cómo añadir un estilo SLD escrito en formato String y almacenado en una variable 'var' de javascript y asignarlo a una capa WMS al crearla.
Respuesta
¿Demasiados anuncios?Todo lo que tiene que hacer es sustituir el parámetro styles por un parámetro SLD que contenga su estilo. El siguiente código de este ejemplo demuestra el concepto.
theSLD_BODY= '<?xml version="1.0" encoding="utf-8"?>' + '<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengeospatial.net/sld/1.0.0/StyledLayerDescriptor.xsd"><NamedLayer><Name>COUNTRY</Name><UserStyle><FeatureTypeStyle><Rule><ogc:Filter><ogc:PropertyIsLike wildCard="*" singleChar="#" escape="!"><ogc:PropertyName>Continent</ogc:PropertyName><ogc:Literal>Africa</ogc:Literal></ogc:PropertyIsLike></ogc:Filter><PolygonSymbolizer><Fill><CssParameter name="fill">#5599DD</CssParameter></Fill><Stroke><CssParameter name="stroke">#000000</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>';
layer2 = new OpenLayers.Layer.WMS( "Africa (SLD_BODY)",
"http://gis.ibbeck.de/include/mapserver/mapserv.exe?map=/daten/mapfiles/world/World.map",
{ "layers": "COUNTRY",
"format": "image/png",
"version": "1.1.1",
"transparent": "TRUE",
"SLD_BODY": theSLD_BODY
});
Puede tener problemas si el SLD es demasiado largo, ya que puede superar la longitud máxima de URL de su navegador. En ese caso, tendrá que cambiar a peticiones POST en lugar de GET.