Skip to content

Commit 5e45f7f

Browse files
author
Marco Hugentobler
committed
Improve capabilities output for layer groups. CRS and bounding box need to be listed before child layers (wms capabilities schema 1.3)
1 parent 40cabbd commit 5e45f7f

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

src/mapserver/qgsconfigparser.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ void QgsConfigParser::appendExGeographicBoundingBox( QDomElement& layerElem,
103103
QDomText nBoundLatitudeText = doc.createTextNode( QString::number( wgs84BoundingRect.yMaximum() ) );
104104
nBoundLatitudeElement.appendChild( nBoundLatitudeText );
105105
ExGeoBBoxElement.appendChild( nBoundLatitudeElement );
106-
layerElem.appendChild( ExGeoBBoxElement );
107106

108107
//BoundingBox element
109108
QDomElement bBoxElement = doc.createElement( "BoundingBox" );
@@ -116,7 +115,18 @@ void QgsConfigParser::appendExGeographicBoundingBox( QDomElement& layerElem,
116115
bBoxElement.setAttribute( "miny", QString::number( layerExtent.yMinimum() ) );
117116
bBoxElement.setAttribute( "maxx", QString::number( layerExtent.xMaximum() ) );
118117
bBoxElement.setAttribute( "maxy", QString::number( layerExtent.yMaximum() ) );
119-
layerElem.appendChild( bBoxElement );
118+
119+
QDomElement lastCRSElem = layerElem.lastChildElement( "CRS" );
120+
if ( !lastCRSElem.isNull() )
121+
{
122+
layerElem.insertAfter( ExGeoBBoxElement, lastCRSElem );
123+
layerElem.insertAfter( bBoxElement, ExGeoBBoxElement );
124+
}
125+
else
126+
{
127+
layerElem.appendChild( ExGeoBBoxElement );
128+
layerElem.appendChild( bBoxElement );
129+
}
120130
}
121131

122132
QStringList QgsConfigParser::createCRSListForLayer( QgsMapLayer* theMapLayer ) const
@@ -242,6 +252,9 @@ void QgsConfigParser::appendCRSElementsToLayer( QDomElement& layerElement, QDomD
242252
return;
243253
}
244254

255+
//insert the CRS elements after the title element to be in accordance with the WMS 1.3 specification
256+
QDomElement titleElement = layerElement.firstChildElement( "Title" );
257+
245258
//In case the number of advertised CRS is constrained
246259
QSet<QString> crsSet = supportedOutputCrsSet();
247260

@@ -255,7 +268,7 @@ void QgsConfigParser::appendCRSElementsToLayer( QDomElement& layerElement, QDomD
255268
QDomElement crsElement = doc.createElement( "CRS" );
256269
QDomText crsText = doc.createTextNode( *crsIt );
257270
crsElement.appendChild( crsText );
258-
layerElement.appendChild( crsElement );
271+
layerElement.insertAfter( crsElement, titleElement );
259272
}
260273
}
261274

src/mapserver/qgsprojectparser.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -272,9 +272,6 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
272272
titleElem.appendChild( titleText );
273273
layerElem.appendChild( titleElem );
274274

275-
QDomElement abstractElem = doc.createElement( "Abstract" );
276-
layerElem.appendChild( abstractElem );
277-
278275
//CRS
279276
QStringList crsList = createCRSListForLayer( currentLayer );
280277
appendCRSElementsToLayer( layerElem, doc, crsList );
@@ -307,13 +304,6 @@ void QgsProjectParser::addLayers( QDomDocument &doc,
307304
continue;
308305
}
309306

310-
#if 0
311-
QString buf;
312-
QTextStream s( &buf );
313-
layerElem.save( s, 0 );
314-
QgsDebugMsg( QString( "adding layer: %1" ).arg( buf ) );
315-
#endif
316-
317307
parentElem.appendChild( layerElem );
318308
}
319309
}

0 commit comments

Comments
 (0)