Add ol.source.Vector#forEachFeatureIntersectingExtent
This commit is contained in:
@@ -247,6 +247,39 @@ ol.source.Vector.prototype.forEachFeatureInExtentAtResolution =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function executes the `callback` function once for each feature
|
||||||
|
* intersecting the `extent` until `callback` returns a truthy value. When
|
||||||
|
* `callback` returns a truthy value the function immediately returns that
|
||||||
|
* value. Otherwise the function returns `undefined`.
|
||||||
|
* @param {ol.Extent} extent Extent.
|
||||||
|
* @param {function(this: T, ol.Feature): S} f Callback.
|
||||||
|
* @param {T=} opt_this The object to use as `this` in `f`.
|
||||||
|
* @return {S|undefined}
|
||||||
|
* @template T,S
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
ol.source.Vector.prototype.forEachFeatureIntersectingExtent =
|
||||||
|
function(extent, f, opt_this) {
|
||||||
|
return this.forEachFeatureInExtent(extent,
|
||||||
|
/**
|
||||||
|
* @param {ol.Feature} feature Feature.
|
||||||
|
* @return {S|undefined}
|
||||||
|
* @template S
|
||||||
|
*/
|
||||||
|
function(feature) {
|
||||||
|
var geometry = feature.getGeometry();
|
||||||
|
goog.asserts.assert(goog.isDefAndNotNull(geometry));
|
||||||
|
if (geometry.intersectsExtent(extent)) {
|
||||||
|
var result = f.call(opt_this, feature);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {Array.<ol.Feature>} Features.
|
* @return {Array.<ol.Feature>} Features.
|
||||||
* @api stable
|
* @api stable
|
||||||
|
|||||||
Reference in New Issue
Block a user