Skip to content

Commit 33ff772

Browse files
authoredApr 20, 2023
Merge pull request #52251 from Gustry/display_name
Server - Add display name in GetFeatureInfo response
2 parents af66062 + b9ad632 commit 33ff772

6 files changed

+36
-2
lines changed
 

‎src/server/services/wms/qgswmsparameters.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,11 @@ namespace QgsWms
538538
QVariant( false ) );
539539
save( pWithMapTip );
540540

541+
const QgsWmsParameter pWithDisplayName( QgsWmsParameter::WITH_DISPLAY_NAME,
542+
QVariant::Bool,
543+
QVariant( false ) );
544+
save( pWithDisplayName );
545+
541546
const QgsWmsParameter pWmtver( QgsWmsParameter::WMTVER );
542547
save( pWmtver );
543548

@@ -2097,6 +2102,11 @@ namespace QgsWms
20972102
return mWmsParameters.value( QgsWmsParameter::WITH_MAPTIP ).toBool();
20982103
}
20992104

2105+
bool QgsWmsParameters::withDisplayName() const
2106+
{
2107+
return mWmsParameters.value( QgsWmsParameter::WITH_DISPLAY_NAME ).toBool();
2108+
}
2109+
21002110
QString QgsWmsParameters::wmtver() const
21012111
{
21022112
return mWmsParameters.value( QgsWmsParameter::WMTVER ).toString();

‎src/server/services/wms/qgswmsparameters.h

+8
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ namespace QgsWms
181181
GRID_INTERVAL_Y,
182182
WITH_GEOMETRY,
183183
WITH_MAPTIP,
184+
WITH_DISPLAY_NAME,
184185
WMTVER,
185186
ATLAS_PK,
186187
FORMAT_OPTIONS,
@@ -1287,6 +1288,13 @@ namespace QgsWms
12871288
*/
12881289
bool withMapTip() const;
12891290

1291+
/**
1292+
* \brief withDisplayName
1293+
* \returns TRUE if the display name is requested for feature info response
1294+
* \since QGIS 3.32
1295+
*/
1296+
bool withDisplayName() const;
1297+
12901298
/**
12911299
* Returns WMTVER parameter or an empty string if not defined.
12921300
* \since QGIS 3.4

‎src/server/services/wms/qgswmsrenderer.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -1867,6 +1867,18 @@ namespace QgsWms
18671867
featureElement.appendChild( maptipElem );
18681868
}
18691869

1870+
QgsExpression displayExpression = layer->displayExpression();
1871+
if ( displayExpression.isValid() && mWmsParameters.withDisplayName() )
1872+
{
1873+
QDomElement displayElem = infoDocument.createElement( QStringLiteral( "Attribute" ) );
1874+
displayElem.setAttribute( QStringLiteral( "name" ), QStringLiteral( "displayName" ) );
1875+
QgsExpressionContext context { renderContext.expressionContext() };
1876+
context.appendScope( QgsExpressionContextUtils::layerScope( layer ) );
1877+
displayExpression.prepare( &context );
1878+
displayElem.setAttribute( QStringLiteral( "value" ), displayExpression.evaluate( &context ).toString() );
1879+
featureElement.appendChild( displayElem );
1880+
}
1881+
18701882
//append feature bounding box to feature info xml
18711883
if ( QgsServerProjectUtils::wmsFeatureInfoAddWktGeometry( *mProject ) &&
18721884
layer->wkbType() != Qgis::WkbType::NoGeometry && hasGeometry )

‎tests/src/python/test_qgsserver_wms_getfeatureinfo.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -116,23 +116,25 @@ def testGetFeatureInfo(self):
116116
'with_geometry=true',
117117
'wms_getfeatureinfo-text-html-geometry')
118118

119-
# Test getfeatureinfo response html with maptip
119+
# Test getfeatureinfo response html with maptip and display name
120120
self.wms_request_compare('GetFeatureInfo',
121121
'&layers=testlayer%20%C3%A8%C3%A9&styles=&' +
122122
'info_format=text%2Fhtml&transparent=true&' +
123123
'width=600&height=400&srs=EPSG%3A3857&bbox=913190.6389747962%2C' +
124124
'5606005.488876367%2C913235.426296057%2C5606035.347090538&' +
125125
'query_layers=testlayer%20%C3%A8%C3%A9&X=190&Y=320&' +
126+
'with_display_name=true&' +
126127
'with_maptip=true',
127128
'wms_getfeatureinfo-text-html-maptip')
128129

129-
# Test getfeatureinfo response html with maptip in text mode
130+
# Test getfeatureinfo response html with maptip and display name in text mode
130131
self.wms_request_compare('GetFeatureInfo',
131132
'&layers=testlayer%20%C3%A8%C3%A9&styles=&' +
132133
'info_format=text%2Fplain&transparent=true&' +
133134
'width=600&height=400&srs=EPSG%3A3857&bbox=913190.6389747962%2C' +
134135
'5606005.488876367%2C913235.426296057%2C5606035.347090538&' +
135136
'query_layers=testlayer%20%C3%A8%C3%A9&X=190&Y=320&' +
137+
'with_display_name=true&' +
136138
'with_maptip=true',
137139
'wms_getfeatureinfo-text-html-maptip-plain')
138140

‎tests/testdata/qgis_server/wms_getfeatureinfo-text-html-maptip-plain.txt

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ id = '3'
99
name = 'three'
1010
utf8nameè = 'three èé↓'
1111
maptip = 'Name: three'
12+
displayName = 'three'
1213

‎tests/testdata/qgis_server/wms_getfeatureinfo-text-html-maptip.txt

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Content-Type: text/html; charset=utf-8
1414
<TR><TH>name</TH><TD>three</TD></TR>
1515
<TR><TH>utf8nameè</TH><TD>three èé↓</TD></TR>
1616
<TR><TH>maptip</TH><TD>Name: three</TD></TR>
17+
<TR><TH>displayName</TH><TD>three</TD></TR>
1718
</TABLE>
1819
</BR>
1920
</TABLE>

0 commit comments

Comments
 (0)
Please sign in to comment.