我有一个功能列表和一个矢量图层,我需要知道每个特征是否在地图视图的范围内。
我使用openlayers v3.9.0并在相应的文档中有一个函数containsExtent()
(link),它接受一个范围并返回一个布尔值。似乎正是我正在寻找的功能。但是抛出一个错误,说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
}
});
这里有什么问题?
如果这是一种更好的方法,只需要在一次调用中获取范围内的那些功能而不迭代列表,就会更好。
答案 0 :(得分:10)
正确的语法是:
ol.extent.containsExtent(extent, feature.getGeometry().getExtent())
如果仔细观察doc page,您会发现该方法是静态方法,而不是ol.Extent
对象的一部分。仅供参考,ol3中没有实际的ol.Extent
对象。它只是一个包含4个数字的数组。我认为ol.Extent
只是编译器的参考。
HTH