File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1616#include " qgsspatialindex.h"
1717#include " qgswfsprovider.h"
1818#include " qgsmessagelog.h"
19+ #include " qgsgeometry.h"
1920
2021QgsWFSFeatureIterator::QgsWFSFeatureIterator ( QgsWFSProvider* provider, const QgsFeatureRequest& request )
2122 : QgsAbstractFeatureIterator( request )
@@ -67,12 +68,24 @@ bool QgsWFSFeatureIterator::nextFeature( QgsFeature& f )
6768 return false ;
6869 }
6970
70- QMap<QgsFeatureId, QgsFeature* >::iterator it = mProvider ->mFeatures .find ( *mFeatureIterator );
71- if ( it == mProvider ->mFeatures .end () )
71+ QgsFeature *fet = 0 ;
72+
73+ for ( ;; )
7274 {
73- return false ;
75+ QMap<QgsFeatureId, QgsFeature* >::iterator it = mProvider ->mFeatures .find ( *mFeatureIterator );
76+ if ( it == mProvider ->mFeatures .end () )
77+ return false ;
78+
79+ fet = it.value ();
80+ if (( mRequest .flags () & QgsFeatureRequest::ExactIntersect ) == 0 )
81+ break ;
82+
83+ if ( fet->geometry () && fet->geometry ()->intersects ( mRequest .filterRect () ) )
84+ break ;
85+
86+ ++mFeatureIterator ;
7487 }
75- QgsFeature* fet = it. value ();
88+
7689
7790 mProvider ->copyFeature ( fet, f, !( mRequest .flags () & QgsFeatureRequest::NoGeometry ) );
7891 ++mFeatureIterator ;
You can’t perform that action at this time.
0 commit comments