Openlayer 3 - 检查功能是否在范围内

Openlayer 3 - check if a feature is within bounds of extent

我有一个要素列表和一个矢量图层,我需要知道每个要素是否在地图视图的范围内。

我正在使用 openlayers v3.9.0,在相应的文档中有一个函数 containsExtent() (link),它接受一个范围和 returns 一个布尔值。似乎正是我正在寻找的功能。但是会抛出一个错误,指出 containsExtent 不是一个函数。

Uncaught TypeError: extent.containsExtent is not a function

代码片段:

// someVectorSource is of type ol.source.Vector
// allMyFeatures is an array of features of type ol.Feature

var extent = someVectorSource.getExtent();
_.each(allMyFeatures, function(feature) {
  if (extent.containsExtent(feature.getGeometry().getExtent())) {
    // do something
  }
});

这里有什么问题?

如果这是一种更好的方法,在不遍历列表的情况下在一次调用中只获取范围内的那些特征,那就更好了。

正确的语法是:

ol.extent.containsExtent(extent, feature.getGeometry().getExtent())

如果仔细观察 doc page,您会发现该方法是静态方法,而不是 ol.Extent 对象的一部分。仅供参考,ol3 中没有实际的 ol.Extent 对象。它只是一个由 4 个数字组成的数组。我认为ol.Extent只是编译器的参考。

HTH