@@ -2281,7 +2281,8 @@ namespace QgsWms
2281
2281
QByteArray QgsRenderer::convertFeatureInfoToJson ( const QList<QgsMapLayer *> &layers, const QDomDocument &doc ) const
2282
2282
{
2283
2283
QString json;
2284
- json.append ( QStringLiteral ( " {\n\" layers\" :[" ) );
2284
+ json.append ( QStringLiteral ( " {\" type\" : \" FeatureCollection\" ,\n " ) );
2285
+ json.append ( QStringLiteral ( " \" features\" :[\n " ) );
2285
2286
2286
2287
const bool withGeometry = ( QgsServerProjectUtils::wmsFeatureInfoAddWktGeometry ( *mProject ) && mWmsParameters .withGeometry () );
2287
2288
@@ -2340,17 +2341,24 @@ namespace QgsWms
2340
2341
exporter.setAttributeDisplayName ( true );
2341
2342
exporter.setAttributes ( attributes );
2342
2343
exporter.setIncludeGeometry ( withGeometry );
2343
- exporter.setIncludeName ( true );
2344
2344
2345
- if ( i > 0 )
2346
- json.append ( QStringLiteral ( " ," ) );
2345
+ for ( const auto feature : features )
2346
+ {
2347
+ if ( json.right ( 1 ).compare ( QStringLiteral ( " }" ) ) == 0 )
2348
+ {
2349
+ json.append ( QStringLiteral ( " ," ) );
2350
+ }
2347
2351
2348
- json.append ( exporter.exportFeatures ( features ) );
2352
+ const QString id = QStringLiteral ( " %1.%2" ).arg ( layer->name (), QgsJsonUtils::encodeValue ( feature.id () ) );
2353
+ json.append ( exporter.exportFeature ( feature, QVariantMap (), id ) );
2354
+ }
2349
2355
}
2350
2356
else // raster layer
2351
2357
{
2352
2358
json.append ( QStringLiteral ( " {" ) );
2353
- json.append ( QStringLiteral ( " \n \" name\" : \" %1\" ,\n " ).arg ( layer->name () ) );
2359
+ json.append ( QStringLiteral ( " \" type\" :\" Feature\" ,\n " ) );
2360
+ json.append ( QStringLiteral ( " \" id\" :\" %1\" ,\n " ).arg ( layer->name () ) );
2361
+ json.append ( QStringLiteral ( " \" properties\" :{\n " ) );
2354
2362
2355
2363
const QDomNodeList attributesNode = layerElem.elementsByTagName ( QStringLiteral ( " Attribute" ) );
2356
2364
for ( int j = 0 ; j < attributesNode.size (); ++j )
@@ -2362,10 +2370,10 @@ namespace QgsWms
2362
2370
if ( j > 0 )
2363
2371
json.append ( QStringLiteral ( " ,\n " ) );
2364
2372
2365
- json.append ( QStringLiteral ( " \" %1\" : \" %2\" " ).arg ( name, value ) );
2373
+ json.append ( QStringLiteral ( " \" %1\" : \" %2\" " ).arg ( name, value ) );
2366
2374
}
2367
2375
2368
- json.append ( QStringLiteral ( " \n }" ) );
2376
+ json.append ( QStringLiteral ( " \n }\n } " ) );
2369
2377
}
2370
2378
}
2371
2379
0 commit comments