@@ -504,30 +504,7 @@ namespace QgsWms
504
504
}
505
505
else
506
506
{
507
- QList<QgsMapLayer *> layerSet;
508
- const QList<QgsWmsParametersLayer> layers = cMapParams.mLayers ;
509
- for ( const auto &layer : layers )
510
- {
511
- QString nickname = layer.mNickname ;
512
- QString style = layer.mStyle ;
513
- if ( mNicknameLayers .contains ( nickname ) && !mRestrictedLayers .contains ( nickname ) )
514
- {
515
- if ( !style.isEmpty () )
516
- {
517
- bool rc = mNicknameLayers [nickname]->styleManager ()->setCurrentStyle ( style );
518
- if ( ! rc )
519
- {
520
- throw QgsMapServiceException ( QStringLiteral ( " StyleNotDefined" ), QStringLiteral ( " Style \" %1\" does not exist for layer \" %2\" " ).arg ( style, nickname ) );
521
- }
522
- }
523
- layerSet << mNicknameLayers [nickname];
524
- }
525
- else
526
- {
527
- throw QgsBadRequestException ( QStringLiteral ( " LayerNotDefined" ),
528
- QStringLiteral ( " Layer \" %1\" does not exist" ).arg ( nickname ) );
529
- }
530
- }
507
+ QList<QgsMapLayer *> layerSet = stylizedLayers ( cMapParams.mLayers );
531
508
layerSet << highlightLayers ( cMapParams.mHighlightLayers );
532
509
std::reverse ( layerSet.begin (), layerSet.end () );
533
510
map->setLayers ( layerSet );
@@ -2389,6 +2366,30 @@ namespace QgsWms
2389
2366
{
2390
2367
mNicknameLayers [ layerNickname ( *ml ) ] = ml;
2391
2368
}
2369
+
2370
+ // init groups
2371
+ const QgsLayerTreeGroup *root = mProject ->layerTreeRoot ();
2372
+ initLayerGroupsRecursive ( root, mProject ->title () );
2373
+ }
2374
+
2375
+ void QgsRenderer::initLayerGroupsRecursive ( const QgsLayerTreeGroup *group, const QString &groupName )
2376
+ {
2377
+ if ( !groupName.isEmpty () )
2378
+ {
2379
+ mLayerGroups [groupName] = QList<QgsMapLayer *>();
2380
+ for ( QgsLayerTreeLayer *layer : group->findLayers () )
2381
+ {
2382
+ mLayerGroups [groupName].append ( layer->layer () );
2383
+ }
2384
+ }
2385
+
2386
+ for ( const QgsLayerTreeNode *child : group->children () )
2387
+ {
2388
+ if ( child->nodeType () == QgsLayerTreeNode::NodeGroup )
2389
+ {
2390
+ initLayerGroupsRecursive ( static_cast <const QgsLayerTreeGroup *>( child ), child->name () );
2391
+ }
2392
+ }
2392
2393
}
2393
2394
2394
2395
QString QgsRenderer::layerNickname ( const QgsMapLayer &layer ) const
@@ -2602,6 +2603,18 @@ namespace QgsWms
2602
2603
mNicknameLayers [lname]->setCustomProperty ( " readSLD" , true );
2603
2604
layers.append ( mNicknameLayers [lname] );
2604
2605
}
2606
+ else if ( mLayerGroups .contains ( lname ) )
2607
+ {
2608
+ for ( QgsMapLayer *layer : mLayerGroups [lname] )
2609
+ {
2610
+ if ( !mRestrictedLayers .contains ( layerNickname ( *layer ) ) )
2611
+ {
2612
+ layer->readSld ( namedElem, err );
2613
+ layer->setCustomProperty ( " readSLD" , true );
2614
+ layers.append ( layer );
2615
+ }
2616
+ }
2617
+ }
2605
2618
else
2606
2619
{
2607
2620
throw QgsBadRequestException ( QStringLiteral ( " LayerNotDefined" ),
@@ -2648,6 +2661,24 @@ namespace QgsWms
2648
2661
2649
2662
layers.append ( mNicknameLayers [nickname] );
2650
2663
}
2664
+ else if ( mLayerGroups .contains ( nickname ) )
2665
+ {
2666
+ for ( QgsMapLayer *layer : mLayerGroups [nickname] )
2667
+ {
2668
+ if ( !mRestrictedLayers .contains ( layerNickname ( *layer ) ) )
2669
+ {
2670
+ if ( !style.isEmpty () )
2671
+ {
2672
+ bool rc = layer->styleManager ()->setCurrentStyle ( style );
2673
+ if ( ! rc )
2674
+ {
2675
+ throw QgsMapServiceException ( QStringLiteral ( " StyleNotDefined" ), QStringLiteral ( " Style \" %1\" does not exist for layer \" %2\" " ).arg ( style, layerNickname ( *layer ) ) );
2676
+ }
2677
+ }
2678
+ layers.append ( layer );
2679
+ }
2680
+ }
2681
+ }
2651
2682
else
2652
2683
{
2653
2684
throw QgsBadRequestException ( QStringLiteral ( " LayerNotDefined" ),
0 commit comments