@@ -653,13 +653,14 @@ namespace QgsWms
653
653
654
654
if ( !map->keepLayerSet () )
655
655
{
656
- if ( cMapParams.mLayers .isEmpty () )
656
+ if ( cMapParams.mLayers .isEmpty () && cMapParams. mExternalLayers . isEmpty () )
657
657
{
658
658
map->setLayers ( mapSettings.layers () );
659
659
}
660
660
else
661
661
{
662
662
QList<QgsMapLayer *> layerSet = stylizedLayers ( cMapParams.mLayers );
663
+ layerSet << externalLayers ( cMapParams.mExternalLayers );
663
664
layerSet << highlightLayers ( cMapParams.mHighlightLayers );
664
665
std::reverse ( layerSet.begin (), layerSet.end () );
665
666
map->setLayers ( layerSet );
@@ -856,6 +857,9 @@ namespace QgsWms
856
857
setLayerAccessControlFilter ( layer );
857
858
}
858
859
860
+ // add external layers
861
+ layers = layers << externalLayers ( mWmsParameters .externalLayersParameters () );
862
+
859
863
// add highlight layers above others
860
864
layers = layers << highlightLayers ( mWmsParameters .highlightLayersParameters () );
861
865
@@ -2914,6 +2918,25 @@ namespace QgsWms
2914
2918
return highlightLayers;
2915
2919
}
2916
2920
2921
+ QList<QgsMapLayer *> QgsRenderer::externalLayers ( const QList<QgsWmsParametersExternalLayer> ¶ms )
2922
+ {
2923
+ QList<QgsMapLayer *> layers;
2924
+
2925
+ for ( const QgsWmsParametersExternalLayer ¶m : params )
2926
+ {
2927
+ std::unique_ptr<QgsMapLayer> layer = qgis::make_unique< QgsRasterLayer >( param.mUri , param.mName , QStringLiteral ( " wms" ) );
2928
+
2929
+ if ( layer->isValid () )
2930
+ {
2931
+ // to delete later
2932
+ mTemporaryLayers .append ( layer.release () );
2933
+ layers << mTemporaryLayers .last ();
2934
+ }
2935
+ }
2936
+
2937
+ return layers;
2938
+ }
2939
+
2917
2940
QList<QgsMapLayer *> QgsRenderer::sldStylizedLayers ( const QString &sld ) const
2918
2941
{
2919
2942
QList<QgsMapLayer *> layers;
@@ -2976,19 +2999,7 @@ namespace QgsWms
2976
2999
{
2977
3000
QString nickname = param.mNickname ;
2978
3001
QString style = param.mStyle ;
2979
- if ( nickname.startsWith ( " EXTERNAL_WMS:" ) )
2980
- {
2981
- QString externalLayerId = nickname;
2982
- externalLayerId.remove ( 0 , 13 );
2983
- QgsMapLayer *externalWMSLayer = createExternalWMSLayer ( externalLayerId );
2984
- if ( externalWMSLayer )
2985
- {
2986
- layers.append ( externalWMSLayer );
2987
- mNicknameLayers [nickname] = externalWMSLayer; // might be used later in GetPrint request
2988
- mTemporaryLayers .append ( externalWMSLayer );
2989
- }
2990
- }
2991
- else if ( mNicknameLayers .contains ( nickname ) && !mRestrictedLayers .contains ( nickname ) )
3002
+ if ( mNicknameLayers .contains ( nickname ) && !mRestrictedLayers .contains ( nickname ) )
2992
3003
{
2993
3004
if ( !style.isEmpty () )
2994
3005
{
@@ -3032,19 +3043,6 @@ namespace QgsWms
3032
3043
return layers;
3033
3044
}
3034
3045
3035
- QgsMapLayer *QgsRenderer::createExternalWMSLayer ( const QString &externalLayerId ) const
3036
- {
3037
- QString wmsUri = mWmsParameters .externalWMSUri ( externalLayerId.toUpper () );
3038
- QgsMapLayer *wmsLayer = new QgsRasterLayer ( wmsUri, externalLayerId, QStringLiteral ( " wms" ) );
3039
- if ( !wmsLayer->isValid () )
3040
- {
3041
- delete wmsLayer;
3042
- return nullptr ;
3043
- }
3044
-
3045
- return wmsLayer;
3046
- }
3047
-
3048
3046
void QgsRenderer::removeTemporaryLayers ()
3049
3047
{
3050
3048
qDeleteAll ( mTemporaryLayers );
0 commit comments