File tree Expand file tree Collapse file tree 1 file changed +17
-4
lines changed Expand file tree Collapse file tree 1 file changed +17
-4
lines changed Original file line number Diff line number Diff line change 16
16
#include " qgsspatialindex.h"
17
17
#include " qgswfsprovider.h"
18
18
#include " qgsmessagelog.h"
19
+ #include " qgsgeometry.h"
19
20
20
21
QgsWFSFeatureIterator::QgsWFSFeatureIterator ( QgsWFSProvider* provider, const QgsFeatureRequest& request )
21
22
: QgsAbstractFeatureIterator( request )
@@ -67,12 +68,24 @@ bool QgsWFSFeatureIterator::nextFeature( QgsFeature& f )
67
68
return false ;
68
69
}
69
70
70
- QMap<QgsFeatureId, QgsFeature* >::iterator it = mProvider ->mFeatures .find ( *mFeatureIterator );
71
- if ( it == mProvider ->mFeatures .end () )
71
+ QgsFeature *fet = 0 ;
72
+
73
+ for ( ;; )
72
74
{
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 ;
74
87
}
75
- QgsFeature* fet = it. value ();
88
+
76
89
77
90
mProvider ->copyFeature ( fet, f, !( mRequest .flags () & QgsFeatureRequest::NoGeometry ) );
78
91
++mFeatureIterator ;
You can’t perform that action at this time.
0 commit comments