[Bugfix][Server] Add TextSymbolizer to SLD provided by WMS GetStyles request

This commit is contained in:
rldhont 2019-10-21 18:26:24 +02:00
parent 8b0e21219d
commit 31ae029ed5

View File

@ -29,6 +29,7 @@
#include "qgsrenderer.h"
#include "qgsvectorlayer.h"
#include "qgsmaplayerstylemanager.h"
#include "qgsvectorlayerlabeling.h"
namespace QgsWms
@ -181,11 +182,35 @@ namespace QgsWms
if ( vlayer->isSpatial() )
{
QString currentStyle = vlayer->styleManager()->currentStyle();
QgsStringMap props;
if ( vlayer->hasScaleBasedVisibility() )
{
props[ QStringLiteral( "scaleMinDenom" ) ] = QString::number( vlayer->maximumScale() );
props[ QStringLiteral( "scaleMaxDenom" ) ] = QString::number( vlayer->minimumScale() );
}
for ( const QString &styleName : vlayer->styleManager()->styles() )
{
vlayer->styleManager()->setCurrentStyle( styleName );
QDomElement styleElem = vlayer->renderer()->writeSld( myDocument, styleName );
namedLayerNode.appendChild( styleElem );
QDomElement userStyleElem = myDocument.createElement( QStringLiteral( "UserStyle" ) );
QDomElement styleNameElem = myDocument.createElement( QStringLiteral( "se:Name" ) );
styleNameElem.appendChild( myDocument.createTextNode( styleName ) );
userStyleElem.appendChild( styleNameElem );
QDomElement featureTypeStyleElem = myDocument.createElement( QStringLiteral( "se:FeatureTypeStyle" ) );
userStyleElem.appendChild( featureTypeStyleElem );
vlayer->renderer()->toSld( myDocument, featureTypeStyleElem, props );
if ( vlayer->labelsEnabled() )
{
vlayer->labeling()->toSld( featureTypeStyleElem, props );
}
namedLayerNode.appendChild( userStyleElem );
}
vlayer->styleManager()->setCurrentStyle( currentStyle );
}