@@ -1496,7 +1496,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
1496
1496
QgsCoordinateReferenceSystem layerCrs = layer->crs ();
1497
1497
bool withGeom = layer->wkbType () != QGis::WKBNoGeometry;
1498
1498
int version = infoFormat.startsWith ( " application/vnd.ogc.gml/3" ) ? 3 : 2 ;
1499
- QDomElement elem = createFeatureGML ( &feature, infoDocument, layerCrs, layer->name (), withGeom, version );
1499
+ QDomElement elem = createFeatureGML ( &feature, layer, infoDocument, layerCrs, layer->name (), withGeom, version );
1500
1500
QDomElement featureMemberElem = infoDocument.createElement ( " gml:featureMember" /* wfs:FeatureMember*/ );
1501
1501
featureMemberElem.appendChild ( elem );
1502
1502
layerElement.appendChild ( featureMemberElem );
@@ -1523,7 +1523,7 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
1523
1523
1524
1524
QDomElement attributeElement = infoDocument.createElement ( " Attribute" );
1525
1525
attributeElement.setAttribute ( " name" , attributeName );
1526
- attributeElement.setAttribute ( " value" , featureAttributes[i].toString () );
1526
+ attributeElement.setAttribute ( " value" , QgsExpression::replaceExpressionText ( featureAttributes[i].toString (), &feature, layer ) );
1527
1527
featureElement.appendChild ( attributeElement );
1528
1528
}
1529
1529
@@ -1607,7 +1607,7 @@ int QgsWMSServer::featureInfoFromRasterLayer( QgsRasterLayer* layer,
1607
1607
1608
1608
QgsCoordinateReferenceSystem layerCrs = layer->crs ();
1609
1609
int version = infoFormat.startsWith ( " application/vnd.ogc.gml/3" ) ? 3 : 2 ;
1610
- QDomElement elem = createFeatureGML ( &feature, infoDocument, layerCrs, layer->name (), false , version );
1610
+ QDomElement elem = createFeatureGML ( &feature, 0 , infoDocument, layerCrs, layer->name (), false , version );
1611
1611
layerElement.appendChild ( elem );
1612
1612
}
1613
1613
else
@@ -2499,6 +2499,7 @@ void QgsWMSServer::convertFeatureInfoToSIA2045( QDomDocument& doc )
2499
2499
2500
2500
QDomElement QgsWMSServer::createFeatureGML (
2501
2501
QgsFeature* feat,
2502
+ QgsVectorLayer* layer,
2502
2503
QDomDocument& doc,
2503
2504
QgsCoordinateReferenceSystem& crs,
2504
2505
QString typeName,
@@ -2560,7 +2561,12 @@ QDomElement QgsWMSServer::createFeatureGML(
2560
2561
{
2561
2562
QString attributeName = fields->at ( i ).name ();
2562
2563
QDomElement fieldElem = doc.createElement ( " qgs:" + attributeName.replace ( QString ( " " ), QString ( " _" ) ) );
2563
- QDomText fieldText = doc.createTextNode ( featureAttributes[i].toString () );
2564
+ QString fieldTextString = featureAttributes[i].toString ();
2565
+ if ( layer )
2566
+ {
2567
+ fieldTextString = QgsExpression::replaceExpressionText ( fieldTextString, feat, layer );
2568
+ }
2569
+ QDomText fieldText = doc.createTextNode ( fieldTextString );
2564
2570
fieldElem.appendChild ( fieldText );
2565
2571
typeNameElement.appendChild ( fieldElem );
2566
2572
}
0 commit comments