Skip to content

Commit b664ca0

Browse files
committed
Merge branch 'master' of github.com:mhugent/Quantum-GIS
2 parents de5ffb5 + 8910039 commit b664ca0

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

src/mapserver/qgswmsserver.cpp

+23-29
Original file line numberDiff line numberDiff line change
@@ -738,14 +738,6 @@ QImage* QgsWMSServer::initializeRendering( QStringList& layersList, QStringList&
738738
QgsRectangle mapExtent = mMapRenderer->extent();
739739
mConfigParser->setScaleDenominator( scaleCalc.calculate( mapExtent, theImage->width() ) );
740740

741-
//create objects for qgis rendering
742-
layerIdList.clear();
743-
QgsDebugMsg( "Layers to render" );
744-
QString myLayer;
745-
foreach( myLayer, layerIdList )
746-
{
747-
QgsDebugMsg( myLayer );
748-
}
749741
layerIdList = layerSet( layersList, stylesList, mMapRenderer->destinationCrs() );
750742
#ifdef QGISDEBUG
751743
QgsDebugMsg( QString( "Number of layers to be rendered. %1" ).arg( layerIdList.count() ) );
@@ -1194,7 +1186,6 @@ QStringList QgsWMSServer::layerSet( const QStringList &layersList,
11941186
allowCaching = false;
11951187
}
11961188

1197-
// Problem method here!
11981189
QList<QgsMapLayer*> layerList = mConfigParser->mapLayerFromStyle( *llstIt, styleName, allowCaching );
11991190
int listIndex;
12001191

@@ -1533,31 +1524,34 @@ QMap<QString, QString> QgsWMSServer::applyRequestedLayerFilters( const QStringLi
15331524
"AND,OR,IN,<,>=,>,>=,!=,',',(,). Not allowed are semicolons in the filter expression." );
15341525
}
15351526

1536-
//we know the layer name, but need to go through the list because a layer could be there several times...
1537-
int listPos = 1;
1538-
QStringList::const_iterator layerIt = layerList.constBegin();
1539-
for ( ; layerIt != layerList.constEnd(); ++layerIt )
1527+
//we need to find the maplayer objects matching the layer name
1528+
QList<QgsMapLayer*> layersToFilter;
1529+
QMap<QString, QgsMapLayer*>& layerMap = QgsMapLayerRegistry::instance()->mapLayers();
1530+
1531+
QMap<QString, QgsMapLayer*>::iterator layerIt = layerMap.begin();
1532+
for ( ; layerIt != layerMap.end(); ++layerIt )
1533+
{
1534+
if ( layerIt.value() && layerIt.value()->name() == eqSplit.at( 0 ) )
1535+
{
1536+
layersToFilter.push_back( layerIt.value() );
1537+
}
1538+
}
1539+
1540+
QList<QgsMapLayer*>::iterator filterIt = layersToFilter.begin();
1541+
for ( ; filterIt != layersToFilter.end(); ++filterIt )
15401542
{
1541-
if ( *layerIt == eqSplit.at( 0 ) )
1543+
QgsVectorLayer* filteredLayer = dynamic_cast<QgsVectorLayer*>( *filterIt );
1544+
if ( filteredLayer )
15421545
{
1543-
QString layerId = layerIds.at( layerIds.size() - listPos );
1544-
QgsVectorLayer* filteredLayer = dynamic_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( layerId ) );
1545-
if ( filteredLayer )
1546+
filterMap.insert( filteredLayer->id(), filteredLayer->subsetString() );
1547+
QString newSubsetString = eqSplit.at( 1 );
1548+
if ( !filteredLayer->subsetString().isEmpty() )
15461549
{
1547-
if ( filteredLayer )
1548-
{
1549-
filterMap.insert( layerId, filteredLayer->subsetString() );
1550-
QString newSubsetString = eqSplit.at( 1 );
1551-
if ( !filteredLayer->subsetString().isEmpty() )
1552-
{
1553-
newSubsetString.prepend( " AND " );
1554-
newSubsetString.prepend( filteredLayer->subsetString() );
1555-
}
1556-
filteredLayer->setSubsetString( newSubsetString );
1557-
}
1550+
newSubsetString.prepend( " AND " );
1551+
newSubsetString.prepend( filteredLayer->subsetString() );
15581552
}
1553+
filteredLayer->setSubsetString( newSubsetString );
15591554
}
1560-
++listPos;
15611555
}
15621556
}
15631557

0 commit comments

Comments
 (0)