Openlayers 绘制多边形以选择要素,但不准确[OL3]

Openlayers 绘制多边形以选择要素,但不准确[OL3],openlayers,openlayers-3,Openlayers,Openlayers 3,绘制多边形并通过它选择要素: draw.on('drawend', function(event) { delaySelectActivate(); selectedFeatures.clear(); var polygon = event.feature.getGeometry(); var features1 = vectorSource.getFeatures(); for (var i = 0 ; i < features1.length; i++){ if(polyg

绘制多边形并通过它选择要素:

draw.on('drawend', function(event) {

delaySelectActivate();
selectedFeatures.clear();

var polygon = event.feature.getGeometry();
var features1 = vectorSource.getFeatures();


for (var i = 0 ; i < features1.length; i++){
  if(polygon.intersectsExtent( features1[i].getGeometry().getExtent() )){
    selectedFeatures.push(features1[i]);
  }
} 
});  
我所尝试的:

  • 我没有使用for循环来获得交集(for循环应该更精确,但事实并非如此),而是尝试使用与dragbox相同的方法来获得交集-使用forEachFeatureIntersectingExtent。这是可行的,但结果是一样的
我认为这是因为绘制多边形的范围不准确。但是,当使用dragbox时,这些特征的范围如何?这些特征似乎也是多边形的精确范围


我遵循了本教程:

使用
forEachFeatureIntersectingExtent
方法似乎确实更加准确:

draw.on('drawend', function(event) {

    delaySelectActivate();
    selectedFeatures.clear();

    var polygon = event.feature.getGeometry();
    vectorSource.forEachFeatureIntersectingExtent(polygon.getExtent(), function(feature) {
        selectedFeatures.push(feature);
    });    
});  

我猜教程的作者使用了for循环,因为他是相交点而不是矢量源。

西班牙的边界框(范围)是什么样子?@geocodezip它在非洲附近有一个岛,所以可能就是它,但我实际上已经修复了它。在下面寻找答案。教程中的代码可能不起作用,因为他是相交点,而不是多边形。
draw.on('drawend', function(event) {

    delaySelectActivate();
    selectedFeatures.clear();

    var polygon = event.feature.getGeometry();
    vectorSource.forEachFeatureIntersectingExtent(polygon.getExtent(), function(feature) {
        selectedFeatures.push(feature);
    });    
});