Skip to content

Commit 9eb4bb6

Browse files
committedApr 1, 2014
[FEATURE:] Consider maptip in GetFeatureInfo
1 parent 1c3b5e4 commit 9eb4bb6

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed
 

‎src/mapserver/qgsprojectparser.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1546,6 +1546,7 @@ void QgsProjectParser::addLayerProjectSettings( QDomElement& layerElem, QDomDocu
15461546
QgsVectorLayer* vLayer = static_cast<QgsVectorLayer*>( currentLayer );
15471547
const QSet<QString>& excludedAttributes = vLayer->excludeAttributesWMS();
15481548
QString displayField = vLayer->displayField();
1549+
int displayFieldIdx = vLayer->fieldNameIndex( displayField );
15491550

15501551
//attributes
15511552
QDomElement attributesElem = doc.createElement( "Attributes" );
@@ -1575,8 +1576,19 @@ void QgsProjectParser::addLayerProjectSettings( QDomElement& layerElem, QDomDocu
15751576
attributeElem.setAttribute( "precision", field.precision() );
15761577
attributesElem.appendChild( attributeElem );
15771578
}
1579+
15781580
//displayfield
1579-
layerElem.setAttribute( "displayField", displayField );
1581+
if ( !displayField.isEmpty() )
1582+
{
1583+
if ( displayFieldIdx >= 0 )
1584+
{
1585+
layerElem.setAttribute( "displayField", displayField );
1586+
}
1587+
else
1588+
{
1589+
layerElem.setAttribute( "displayField", "maptip" );
1590+
}
1591+
}
15801592
layerElem.appendChild( attributesElem );
15811593
}
15821594
}

‎src/mapserver/qgswmsserver.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,6 +1558,19 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
15581558
featureElement.appendChild( attributeElement );
15591559
}
15601560

1561+
//add maptip attribute based on html/expression (in case there is no maptip attribute)
1562+
if ( layer->fieldNameIndex( layer->displayField() ) < 0 )
1563+
{
1564+
QString displayField = layer->displayField();
1565+
if ( !displayField.isEmpty() )
1566+
{
1567+
QDomElement maptipElem = infoDocument.createElement( "Attribute" );
1568+
maptipElem.setAttribute( "name", "maptip" );
1569+
maptipElem.setAttribute( "value", QgsExpression::replaceExpressionText( displayField, &feature, layer ) );
1570+
featureElement.appendChild( maptipElem );
1571+
}
1572+
}
1573+
15611574
//append feature bounding box to feature info xml
15621575
if ( hasGeometry && mapRender )
15631576
{
@@ -2608,6 +2621,20 @@ QDomElement QgsWMSServer::createFeatureGML(
26082621
typeNameElement.appendChild( fieldElem );
26092622
}
26102623

2624+
//add maptip attribute based on html/expression (in case there is no maptip attribute)
2625+
if ( layer->fieldNameIndex( layer->displayField() ) < 0 )
2626+
{
2627+
QString displayField = layer->displayField();
2628+
if ( !displayField.isEmpty() )
2629+
{
2630+
QString fieldTextString = QgsExpression::replaceExpressionText( displayField, feat, layer );
2631+
QDomElement fieldElem = doc.createElement( "qgs:maptip" );
2632+
QDomText maptipText = doc.createTextNode( fieldTextString );
2633+
fieldElem.appendChild( maptipText );
2634+
typeNameElement.appendChild( fieldElem );
2635+
}
2636+
}
2637+
26112638
return typeNameElement;
26122639
}
26132640

0 commit comments

Comments
 (0)
Please sign in to comment.