20
20
#include " qgsconfigparserutils.h"
21
21
#include " qgslogger.h"
22
22
#include " qgsmaplayer.h"
23
+ #include " qgsmaplayerstylemanager.h"
23
24
#include " qgsmapserviceexception.h"
24
25
#include " qgspallabeling.h"
25
26
#include " qgsvectorlayer.h"
@@ -97,7 +98,6 @@ void QgsWMSProjectParser::layersAndStylesCapabilities( QDomElement& parentElemen
97
98
98
99
QList<QgsMapLayer*> QgsWMSProjectParser::mapLayerFromStyle ( const QString& lName, const QString& styleName, bool useCache ) const
99
100
{
100
- Q_UNUSED ( styleName );
101
101
QMap< int , QgsMapLayer* > layers;
102
102
103
103
// first check if the layer name refers an unpublished layer / group
@@ -106,12 +106,23 @@ QList<QgsMapLayer*> QgsWMSProjectParser::mapLayerFromStyle( const QString& lName
106
106
return QList<QgsMapLayer*>();
107
107
}
108
108
109
+ // can't use layer cache if we are going to apply a non-default style
110
+ if ( !styleName.isEmpty () )
111
+ useCache = false ;
112
+
109
113
// does lName refer to a leaf layer
110
114
const QHash< QString, QDomElement > &projectLayerElements = mProjectParser ->useLayerIDs () ? mProjectParser ->projectLayerElementsById () : mProjectParser ->projectLayerElementsByName ();
111
115
QHash< QString, QDomElement >::const_iterator layerElemIt = projectLayerElements.find ( lName );
112
116
if ( layerElemIt != projectLayerElements.constEnd () )
113
117
{
114
- return QList<QgsMapLayer*>() << mProjectParser ->createLayerFromElement ( layerElemIt.value (), useCache );
118
+ QgsMapLayer* ml = mProjectParser ->createLayerFromElement ( layerElemIt.value (), useCache );
119
+ if ( !styleName.isEmpty () )
120
+ {
121
+ // try to apply the specified style
122
+ if ( !ml->styleManager ()->setCurrentStyle ( styleName ) )
123
+ throw QgsMapServiceException ( " StyleNotDefined" , QString ( " Style \" %1\" does not exist for layer \" %2\" " ).arg ( styleName ).arg ( lName ) );
124
+ }
125
+ return QList<QgsMapLayer*>() << ml;
115
126
}
116
127
117
128
// group or project name
0 commit comments