@@ -738,14 +738,6 @@ QImage* QgsWMSServer::initializeRendering( QStringList& layersList, QStringList&
738
738
QgsRectangle mapExtent = mMapRenderer ->extent ();
739
739
mConfigParser ->setScaleDenominator ( scaleCalc.calculate ( mapExtent, theImage->width () ) );
740
740
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
- }
749
741
layerIdList = layerSet ( layersList, stylesList, mMapRenderer ->destinationCrs () );
750
742
#ifdef QGISDEBUG
751
743
QgsDebugMsg ( QString ( " Number of layers to be rendered. %1" ).arg ( layerIdList.count () ) );
@@ -1194,7 +1186,6 @@ QStringList QgsWMSServer::layerSet( const QStringList &layersList,
1194
1186
allowCaching = false ;
1195
1187
}
1196
1188
1197
- // Problem method here!
1198
1189
QList<QgsMapLayer*> layerList = mConfigParser ->mapLayerFromStyle ( *llstIt, styleName, allowCaching );
1199
1190
int listIndex;
1200
1191
@@ -1533,31 +1524,34 @@ QMap<QString, QString> QgsWMSServer::applyRequestedLayerFilters( const QStringLi
1533
1524
" AND,OR,IN,<,>=,>,>=,!=,',',(,). Not allowed are semicolons in the filter expression." );
1534
1525
}
1535
1526
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 )
1540
1542
{
1541
- if ( *layerIt == eqSplit.at ( 0 ) )
1543
+ QgsVectorLayer* filteredLayer = dynamic_cast <QgsVectorLayer*>( *filterIt );
1544
+ if ( filteredLayer )
1542
1545
{
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 () )
1546
1549
{
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 () );
1558
1552
}
1553
+ filteredLayer->setSubsetString ( newSubsetString );
1559
1554
}
1560
- ++listPos;
1561
1555
}
1562
1556
}
1563
1557
0 commit comments