Skip to content

Commit d64525c

Browse files
committedOct 24, 2014
[BUGFIX] #11484 QGIS server: embedded layers are not published (GetCapabilities, GetMap, etc)
Issue #1072 QGIS server: embedded groups do not render in GetMap requests if leave layers are requested has been fixed 40d9145 But another fix about embedded layers lacks. A fixme annotation is in the QgsServerProjectParser::createLayerFromElement. This one is about return the layer if it is embedded. In QgsServerProjectParser::createLayerFromElement, we need to generate a QgsServerProjectParser of the parent project to return the mapLayer for embedded layers. To do it, I use QgsCacheConfig to get the QgsServerProjectParser for the parent project. Funded by 3Liz.
1 parent 6bde8a2 commit d64525c

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed
 

‎src/mapserver/qgsconfigcache.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ QgsConfigCache::~QgsConfigCache()
4040
{
4141
}
4242

43+
QgsServerProjectParser* QgsConfigCache::serverConfiguration( const QString& filePath )
44+
{
45+
QDomDocument* doc = xmlDocument( filePath );
46+
return new QgsServerProjectParser( doc, filePath );
47+
}
48+
4349
QgsWCSProjectParser* QgsConfigCache::wcsConfiguration( const QString& filePath )
4450
{
4551
QgsWCSProjectParser* p = mWCSConfigCache.object( filePath );

‎src/mapserver/qgsconfigcache.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <QMap>
2424
#include <QObject>
2525

26+
class QgsServerProjectParser;
2627
class QgsWCSProjectParser;
2728
class QgsWFSProjectParser;
2829
class QgsWMSConfigParser;
@@ -36,6 +37,7 @@ class QgsConfigCache: public QObject
3637
static QgsConfigCache* instance();
3738
~QgsConfigCache();
3839

40+
QgsServerProjectParser* serverConfiguration( const QString& filePath );
3941
QgsWCSProjectParser* wcsConfiguration( const QString& filePath );
4042
QgsWFSProjectParser* wfsConfiguration( const QString& filePath );
4143
QgsWMSConfigParser* wmsConfiguration( const QString& filePath, const QMap<QString, QString>& parameterMap = ( QMap< QString, QString >() ) );

‎src/mapserver/qgsserverprojectparser.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -225,24 +225,15 @@ QgsMapLayer* QgsServerProjectParser::createLayerFromElement( const QDomElement&
225225
}
226226
else if ( elem.attribute( "embedded" ) == "1" ) //layer is embedded from another project file
227227
{
228-
//todo: fixme
229-
/*
230228
QString project = convertToAbsolutePath( elem.attribute( "project" ) );
231229
QgsDebugMsg( QString( "Project path: %1" ).arg( project ) );
232-
233-
QgsProjectParser* otherConfig = dynamic_cast<QgsProjectParser*>( QgsConfigCache::instance()->searchConfiguration( project ) );
230+
231+
QgsServerProjectParser* otherConfig = QgsConfigCache::instance()->serverConfiguration( project );
234232
if ( !otherConfig )
235233
{
236234
return 0;
237235
}
238-
239-
QHash< QString, QDomElement >::const_iterator layerIt = otherConfig->mProjectLayerElementsById.find( elem.attribute( "id" ) );
240-
if ( layerIt == otherConfig->mProjectLayerElementsById.constEnd() )
241-
{
242-
return 0;
243-
}
244-
return otherConfig->createLayerFromElement( layerIt.value() );
245-
*/
236+
return otherConfig->mapLayerFromLayerId( elem.attribute( "id" ), useCache );
246237
}
247238

248239
if ( layer )

0 commit comments

Comments
 (0)
Please sign in to comment.