Click 单击并双击,取消选择交互OpenLayers 3
我有两个ol.交互。选择,一个单击,另一个双击Click 单击并双击,取消选择交互OpenLayers 3,click,openlayers-3,double-click,Click,Openlayers 3,Double Click,我有两个ol.交互。选择,一个单击,另一个双击 var selectDoubleClick = new ol.interaction.Select({ multi: true, condition: ol.events.condition.doubleClick, style: function(feature) { //stuff here; } return feature; } selectDoubleClick.on('selec
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
}
但是当我想取消选择双击时,我必须在地图上单击两次。有没有办法只需单击一下就可以在双击中取消选择 您可以通过将自定义函数作为
选择双击
交互的条件
传递来执行此操作。检查所选特征并在未选择特征时对双击作出反应,在有所选特征时对单击作出反应的功能。像这样:
condition: function(mapBrowserEvent) {
if (selectDoubleClick.getFeatures().getLength() == 0) {
return mapBrowserEvent.type == 'dblclick';
} else {
return mapBrowserEvent.type == 'singleclick';
}
}
您可以通过将自定义函数作为
selectDoubleClick
交互的condition
传递来执行此操作。检查所选特征并在未选择特征时对双击作出反应,在有所选特征时对单击作出反应的功能。像这样:
condition: function(mapBrowserEvent) {
if (selectDoubleClick.getFeatures().getLength() == 0) {
return mapBrowserEvent.type == 'dblclick';
} else {
return mapBrowserEvent.type == 'singleclick';
}
}
在我的解决问题版本中,我使用了@ahocevar的部分代码 我的解决办法很简单。首先,如果存在指向此交互的任何getFeature链接(选择双击),然后清除此功能
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}
如果单击了地图并清除了功能,则最好让事件侦听 在我的解决问题版本中,我使用了@ahocevar的部分代码
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}
我的解决办法很简单。首先,如果存在指向此交互的任何getFeature链接(选择双击),然后清除此功能
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}
如果单击了地图并清除了功能,则最好让事件侦听 您正在将这两个功能分配给双击和
返回功能代码>在您放置它的位置没有意义。它应该在样式函数中吗?我们甚至不知道你的地图是什么样子,所以你能给我们一个活生生的例子,让我们帮助你吗?是的,这是真的,伊卡洛斯,我的错误,但错误还在继续。当我用双击取消选择所选的功能时,我也必须用两次单击取消选择。您将两者都指定为双击,并且返回功能代码>在您放置它的位置没有意义。它应该在样式函数中吗?我们甚至不知道你的地图是什么样子,所以你能给我们一个活生生的例子,让我们帮助你吗?是的,这是真的,伊卡洛斯,我的错误,但错误还在继续。当我用双击取消选择所选功能时,我也必须用两次单击取消选择。谢谢verry mutch@ahocevar,但这种方式不是最好的使用方式,因为我们一直在从地图浏览器(mapBrowserEvent)读取值,对我来说不是最好的方法。不确定你的意思是什么-交互将mapBrowserEvent
传递给条件函数。是的,我知道,但没有使用该函数。最好清除该交互选择的功能谢谢verry mutch@ahocevar,但这种方式不是最好的使用方式,因为我们一直在从地图浏览器(mapBrowserEvent)读取值,对我来说不是最好的方法。不确定你的意思是什么-交互将mapBrowserEvent
传递给条件函数。是的,我知道,但没有使用该函数。最好清除该交互选择的功能
var concludeClickEdit = function(eventListener) {
if(selectDoubleClick.getFeatures().getLength() !== 0){
selectDoubleClick.getFeatures().clear();
}
}