首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击并双击,取消选择交互OpenLayers 3

单击并双击,取消选择交互OpenLayers 3
EN

Stack Overflow用户
提问于 2017-01-30 16:14:49
回答 2查看 2.2K关注 0票数 0

我有两个ol.interaction.Select,,一个是单击,另一个是双击。

代码语言:javascript
复制
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
}

但是当我想取消双击的时候,我必须在地图上点击两次。是否有任何方法在双击中取消只需一次单击?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 09:16:22

在解决问题的版本中,我使用了@ahocevar的部分代码,我的解决方案很简单。首先,如果存在到此交互(selectDoubleClick)的任何selectDoubleClick链接,然后清除这些特性。

代码语言:javascript
复制
var concludeClickEdit = function(eventListener) {
    if(selectDoubleClick.getFeatures().getLength() !== 0){
             selectDoubleClick.getFeatures().clear();
          }
}

如果地图被点击并清除特征,最好让一个事件侦听。

票数 0
EN

Stack Overflow用户

发布于 2017-02-01 11:34:12

您可以通过将自定义函数作为condition传递给selectDoubleClick交互,从而做到这一点。如果没有选择功能,则检查所选功能并对双击作出反应;如果有所选功能,则只需单击一次。如下所示:

代码语言:javascript
复制
condition: function(mapBrowserEvent) {
  if (selectDoubleClick.getFeatures().getLength() == 0) {
    return mapBrowserEvent.type == 'dblclick';
  } else {
    return mapBrowserEvent.type == 'singleclick';
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41940544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档