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
我有一个要素列表和一个矢量图层,我需要知道每个要素是否在地图视图的范围内。
我正在使用 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