我有一个具有重叠特征的层(例如,边界框)。在OL2中,选择控件似乎选择了预期的特征(例如,具有较小表面积的特征)。在OL3中,情况似乎并非如此。虽然我可以获得特定像素上的所有特征,但我更希望select控件返回与单击相交的所有特征。有办法做到这一点吗?
发布于 2016-12-02 20:49:29
您可以将ol.interaction.Select的multi成员设置为true (它允许选择您单击的坐标处的所有要素),并添加一个事件以选择要在所有重叠要素中选择的要素:
var select = new ol.interaction.Select({
multi: true
});
var fnHandler = function (e) {
e.selected; // array of selected features
e.target; // select interaction
var feature = e.selected.filter(function (feature) {
// do some filtering to choose what feature do you want
})[0];
e.target.getFeatures().clear(); // unselect all features
e.target.getFeatures().push(feature); // select the feature you filtered
};
select.on('select', fnHandler);发布于 2016-02-23 10:58:46
为了获得与鼠标点击相交的图层中的所有特征,我这样做:
map.on("click", function(event) {
var coordinate = event.coordinate;
var features = myVectorLayer.getSource().getFeaturesAtCoordinate(coordinate);
// Do something with the features that were clicked here...
});https://stackoverflow.com/questions/35563046
复制相似问题