2016-12-28 23 views
1

WMSレイヤーのSLDを動的に変更したい。 Geoserverの保存したSLDをSTYLESのparamで適用することはできますが、SLD_BODYでSLDを適用したいときはリクエストを送信しますが、何も起こりません。私はすべてがうまくいくと思うが、SLDはレイヤーには当てはまらない。ここでは、コードは次のとおりです。代わりに、あなたのSLD PLSのOpenLayersでWMSレイヤーにSLDを適用する3

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

答えて

0

この

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>' 
+0

を置き換える私はGeoserverに要求を送信し、私はこのエラーを取得し、未定義にスタイルを変更: java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber 文字列をデバッグしていますが、色のために送信する#文字が原因です。私はそれを訂正するべきかわからない – danialtehrani

+0

上記のコードをあなたのsld plsの代わりに置き換える – dev9

関連する問題