我有两个ol.interaction.Select,,一个是单击,另一个是双击。
var selectDoubleClick = new ol.interaction.Select({
multi: true,
condition: ol.events.condition.doubleClick,
style: function(feature) {
//stuff here;
}
return feature;
}
selectDoubleClick.on('select',function(event) {
//stuff here
}
var selectSingleClick = new ol.interaction.Select({
multi: true,
condition: ol.events.condition.singleClick,
style: function(feature) {
//stuff here
}
return feature;
}
selectSingleClick.on('select',function(event) {
//stuff here
}但是当我想取消双击的时候,我必须在地图上点击两次。是否有任何方法在双击中取消只需一次单击?
发布于 2017-02-02 09:16:22
在解决问题的版本中,我使用了@ahocevar的部分代码,我的解决方案很简单。首先,如果存在到此交互(selectDoubleClick)的任何selectDoubleClick链接,然后清除这些特性。
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}如果地图被点击并清除特征,最好让一个事件侦听。
发布于 2017-02-01 11:34:12
您可以通过将自定义函数作为condition传递给selectDoubleClick交互,从而做到这一点。如果没有选择功能,则检查所选功能并对双击作出反应;如果有所选功能,则只需单击一次。如下所示:
condition: function(mapBrowserEvent) {
if (selectDoubleClick.getFeatures().getLength() == 0) {
return mapBrowserEvent.type == 'dblclick';
} else {
return mapBrowserEvent.type == 'singleclick';
}
}https://stackoverflow.com/questions/41940544
复制相似问题