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。这是可行的,但结果是一样的
我遵循了本教程:使用
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);
});
});