单击并双击,取消选择交互 OpenLayers 3
Click and Double click, deselect interaction OpenLayers 3
我有两个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
}
但是当我想取消双击时,我必须在地图上点击两次。有什么方法可以通过单击双击取消选择吗?
您可以通过将自定义函数作为 selectDoubleClick
交互的 condition
传递来实现。检查所选功能并在未选择功能时对 double-click 做出反应的东西,以及在选择功能时对 single-click 做出反应的东西。像这样:
condition: function(mapBrowserEvent) {
if (selectDoubleClick.getFeatures().getLength() == 0) {
return mapBrowserEvent.type == 'dblclick';
} else {
return mapBrowserEvent.type == 'singleclick';
}
}
在我解决问题的版本中,我使用了来自@ahocevar 的部分代码
我的解决方案很简单。首先如果存在任何 getFeature link 到此交互 (selectDoubleClick),然后清除此功能。
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}
如果单击地图而不是清除地图项,最好让事件监听。
我有两个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
}
但是当我想取消双击时,我必须在地图上点击两次。有什么方法可以通过单击双击取消选择吗?
您可以通过将自定义函数作为 selectDoubleClick
交互的 condition
传递来实现。检查所选功能并在未选择功能时对 double-click 做出反应的东西,以及在选择功能时对 single-click 做出反应的东西。像这样:
condition: function(mapBrowserEvent) {
if (selectDoubleClick.getFeatures().getLength() == 0) {
return mapBrowserEvent.type == 'dblclick';
} else {
return mapBrowserEvent.type == 'singleclick';
}
}
在我解决问题的版本中,我使用了来自@ahocevar 的部分代码 我的解决方案很简单。首先如果存在任何 getFeature link 到此交互 (selectDoubleClick),然后清除此功能。
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}
如果单击地图而不是清除地图项,最好让事件监听。