mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-31 00:03:42 -04:00
Support external WMS layers in GetPrint and GetMap requests
This commit is contained in:
parent
f579f1a449
commit
40201b2ef5
@ -2610,7 +2610,17 @@ namespace QgsWms
|
||||
{
|
||||
QString nickname = param.mNickname;
|
||||
QString style = param.mStyle;
|
||||
if ( mNicknameLayers.contains( nickname ) && !mRestrictedLayers.contains( nickname ) )
|
||||
if ( nickname.startsWith( "EXTERNAL_WMS:" ) )
|
||||
{
|
||||
QString externalLayerId = nickname;
|
||||
externalLayerId.remove( 0, 13 );
|
||||
QgsMapLayer *externalWMSLayer = createExternalWMSLayer( externalLayerId );
|
||||
if ( externalWMSLayer )
|
||||
{
|
||||
layers.append( externalWMSLayer );
|
||||
}
|
||||
}
|
||||
else if ( mNicknameLayers.contains( nickname ) && !mRestrictedLayers.contains( nickname ) )
|
||||
{
|
||||
if ( !style.isEmpty() )
|
||||
{
|
||||
@ -2633,6 +2643,35 @@ namespace QgsWms
|
||||
return layers;
|
||||
}
|
||||
|
||||
QgsMapLayer *QgsRenderer::createExternalWMSLayer( const QString &externalLayerId ) const
|
||||
{
|
||||
QgsMapLayer *wmsLayer = 0;
|
||||
QgsDataSourceUri wmsUri;
|
||||
|
||||
QgsServerRequest::Parameters::const_iterator it = mParameters.lowerBound( externalLayerId.toUpper() + ":" );
|
||||
while ( it != mParameters.constEnd() )
|
||||
{
|
||||
if ( !it.key().startsWith( externalLayerId.toUpper() + ":" ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
QString paramKey = it.key();
|
||||
paramKey.remove( 0, externalLayerId.size() + 1 );
|
||||
wmsUri.setParam( paramKey.toLower(), it.value() );
|
||||
++it;
|
||||
}
|
||||
|
||||
wmsLayer = new QgsRasterLayer( wmsUri.encodedUri(), externalLayerId, QStringLiteral( "wms" ) );
|
||||
if ( !wmsLayer->isValid() )
|
||||
{
|
||||
delete wmsLayer;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return wmsLayer;
|
||||
}
|
||||
|
||||
QPainter *QgsRenderer::layersRendering( const QgsMapSettings &mapSettings, QImage &image, HitTest *hitTest ) const
|
||||
{
|
||||
QPainter *painter = nullptr;
|
||||
|
@ -274,6 +274,9 @@ namespace QgsWms
|
||||
//! configure the composition for the GetPrint request
|
||||
bool configureComposition( QgsComposition *c, const QgsMapSettings &mapSettings );
|
||||
|
||||
//! Creates external WMS layer. Caller takes ownership
|
||||
QgsMapLayer *createExternalWMSLayer( const QString &externalLayerId ) const;
|
||||
|
||||
private:
|
||||
|
||||
const QgsServerRequest::Parameters &mParameters;
|
||||
|
Loading…
x
Reference in New Issue
Block a user