绘制多边形到 select 个要素,但不准确 [OL3]

Drawing a polygon to select features, but is inaccurate [OL3]

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

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]);
  }
} 
});  

Returns 这个结果: 出于某种原因,西班牙也被选中了,即使它看起来远离多边形的范围? 下面是一个拖拽框选择的例子:

这里是相关的 dragbox js:

dragBox.on('boxend', function() {
    // features that intersect the box are added to the collection of
    // selected features
    drawingSource.clear();
    var extent = dragBox.getGeometry().getExtent();
    vectorSource.forEachFeatureIntersectingExtent(extent, function(feature) {
      selectedFeatures.push(feature);
    });
});

我试过的:

我认为是因为绘制的多边形范围不准确。但是当使用 dragbox 时,似乎也是多边形的特征范围如何准确?

我遵循了这个教程:Selecting features by drawing polygons in openLayers 3

看来确实用forEachFeatureIntersectingExtent方法准确多了:

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

    delaySelectActivate();
    selectedFeatures.clear();

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

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