Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Apply opacities on external layers when use layer ids
Fixes an unreported bug when using layer ids and external WMS
layers: opacities were ignored for the external layers.

This was caused by the layerNickname() returning the layer id
which is not known to the client and cannot be used for external
layers, layer name is used instead.
  • Loading branch information
elpaso authored and nyalldawson committed Jul 18, 2022
1 parent fde9557 commit cd53b64
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/server/services/wms/qgswmsrendercontext.cpp
Expand Up @@ -114,7 +114,9 @@ QgsWmsParametersLayer QgsWmsRenderContext::parameters( const QgsMapLayer &layer
{
QgsWmsParametersLayer parameters;

for ( const auto &params : mParameters.layersParameters() )
const QList<QgsWmsParametersLayer> cLayerParams { mParameters.layersParameters() };

for ( const auto &params : std::as_const( cLayerParams ) )
{
if ( params.mNickname == layerNickname( layer ) )
{
Expand Down Expand Up @@ -266,7 +268,13 @@ bool QgsWmsRenderContext::updateExtent() const
QString QgsWmsRenderContext::layerNickname( const QgsMapLayer &layer ) const
{
QString name = layer.shortName();
if ( QgsServerProjectUtils::wmsUseLayerIds( *mProject ) )
// For external layers we cannot use the layer id because it's not known to the client, use layer name instead.
if ( QgsServerProjectUtils::wmsUseLayerIds( *mProject ) &&
std::find_if( mExternalLayers.cbegin(), mExternalLayers.cend(),
[ &layer ]( const QgsMapLayer * l )
{
return l->id() == layer.id();
} ) == mExternalLayers.cend() )
{
name = layer.id();
}
Expand Down

0 comments on commit cd53b64

Please sign in to comment.