Openlayers 3 通过OpenLayers 3将SLD应用于WMS层
我想动态更改WMS层的SLD。我可以通过STYLES参数应用Geoserver保存的SLD,但当我想通过SLD_BODY应用SLD时,它会发送请求,但不会发生任何事情。我认为一切都很好,但SLD不适用于图层。代码如下:Openlayers 3 通过OpenLayers 3将SLD应用于WMS层,openlayers-3,geoserver,sld,Openlayers 3,Geoserver,Sld,我想动态更改WMS层的SLD。我可以通过STYLES参数应用Geoserver保存的SLD,但当我想通过SLD_BODY应用SLD时,它会发送请求,但不会发生任何事情。我认为一切都很好,但SLD不适用于图层。代码如下: var SLD = '<?xml version="1.0" encoding="UTF-8"?>'+ '<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmln
var SLD = '<?xml version="1.0" encoding="UTF-8"?>'+
'<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" 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.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">'+
'<NamedLayer>'+
'<Name>pmo:'+ layer.Name + '</Name>'+
'<UserStyle>'+
'<Name>pmo:' + layer.Name + '</Name>' +
'<Title>A small red flag</Title>'+
'<Abstract>A sample of how to use an SVG based symbolizer</Abstract>'+
'<FeatureTypeStyle>'+
'<Rule>'+
'<Title>Red flag</Title>'+
'<PointSymbolizer>'+
'<Graphic>'+
'<ExternalGraphic>'+
'<OnlineResource xlink:type="simple" xlink:href="burg02.svg" />'+
'<Format>image/svg+xml</Format>'+
'</ExternalGraphic>'+
'<Size>'+
'<ogc:Literal>20</ogc:Literal>'+
'</Size>'+
'</Graphic>'+
'</PointSymbolizer>'+
'</Rule>'+
'</FeatureTypeStyle>'+
'</UserStyle>'+
'</NamedLayer>'+
'</StyledLayerDescriptor>';
SLD = encodeURI(SLD);
var source = layer.WMSLayer.getSource();
source.updateParams({ 'STYLES': '' ,'SLD_BODY': SLD });
var SLD=''+
''+
''+
“pmo:”+层名称+“”+
''+
“pmo:”+层名称+“”+
“小红旗”+
'如何使用基于SVG的符号器的示例'+
''+
''+
“红旗”+
''+
''+
''+
''+
“图像/svg+xml”+
''+
''+
'20'+
''+
''+
''+
''+
''+
''+
''+
'';
SLD=编码URI(SLD);
var source=layer.WMSLayer.getSource();
updateParams({'STYLES':'','SLD_BODY':SLD});
请更换您的sld
var sld='<?xml version="1.0" encoding="UTF-8"?><StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" 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.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"><NamedLayer><Name></Name><UserStyle><Name></Name><Title>A small red flag</Title><Abstract>A sample of how to use an SVG based symbolizer</Abstract><FeatureTypeStyle><FeatureTypeName>Feature</FeatureTypeName><SemanticTypeIdentifier>generic:geometry</SemanticTypeIdentifier><SemanticTypeIdentifier>simple</SemanticTypeIdentifier><Rule><Title>Red flag</Title><PointSymbolizer><Graphic><ExternalGraphic><OnlineResource xlink:type="simple" xlink:href="https://svn.osgeo.org/qgis/trunk/qgis/images/svg/gpsicons/anchor.svg" /><Format>image/svg+xml</Format></ExternalGraphic><Size><ogc:Literal>20</ogc:Literal></Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>'
var sld='A小红旗如何使用基于SVG的符号功能的示例Generic:GeometrySamplered flagimage/SVG+xml20'
请更换您的sld
var sld='<?xml version="1.0" encoding="UTF-8"?><StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" 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.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"><NamedLayer><Name></Name><UserStyle><Name></Name><Title>A small red flag</Title><Abstract>A sample of how to use an SVG based symbolizer</Abstract><FeatureTypeStyle><FeatureTypeName>Feature</FeatureTypeName><SemanticTypeIdentifier>generic:geometry</SemanticTypeIdentifier><SemanticTypeIdentifier>simple</SemanticTypeIdentifier><Rule><Title>Red flag</Title><PointSymbolizer><Graphic><ExternalGraphic><OnlineResource xlink:type="simple" xlink:href="https://svn.osgeo.org/qgis/trunk/qgis/images/svg/gpsicons/anchor.svg" /><Format>image/svg+xml</Format></ExternalGraphic><Size><ogc:Literal>20</ogc:Literal></Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>'
var sld='A小红旗如何使用基于SVG的符号功能的示例Generic:GeometrySamplered flagimage/SVG+xml20'
我将样式更改为未定义,我将请求发送到Geoserver,得到以下错误:java.lang.RuntimeException:org.xml.sax.SAXParseException;lineNumber我调试字符串,这是因为我发送了#字符作为颜色。我不知道该如何将itI更改的样式更正为未定义,我将请求发送到Geoserver,得到以下错误:java.lang.RuntimeException:org.xml.sax.saxpasseeption;lineNumber我调试字符串,这是因为我发送了#字符作为颜色。我不知道该怎么纠正它