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

时间:2017-01-30 16:14:49

标签: click openlayers-3 double-click

我拖了 ol.interaction.Select ,一次单击,另一次双击。

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"


    defaultConfig {
        applicationId "com.example.eskimo"
        minSdkVersion 21
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        jackOptions {
            enabled false
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    compileOptions {

    }

    aaptOptions {
        cruncherEnabled = false
    }
}
dependencies {
    compile 'com.android.support:recyclerview-v7:+'
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'com.google.guava:guava:17.0'
    compile files('libs/mobileservices-2.0.1-beta-javadoc.jar')
    compile files('libs/mobileservices-2.0.1-beta-sources.jar')
    compile files('libs/mobileservices-2.0.1-beta.jar')
    compile "com.google.android.gms:play-services-identity:8.4.0"
    compile "com.google.android.gms:play-services-location:8.4.0"
    compile "com.google.android.gms:play-services-appindexing:8.4.0"
    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.akexorcist:RoundCornerProgressBar:2.0.3'
    compile project(':MPChartLib3')
    compile project(':ButtonsLib')
    compile 'com.google.android.gms:play-services-maps:10.0.1'

}

但是当我想要取消选择双击时,我必须在地图中单击两次。是否可以通过一次单击双击取消选择?

2 个答案:

答案 0 :(得分:1)

您可以通过将自定义函数作为condition互动的selectDoubleClick传递来实现此目的。如果没有选择任何功能,则会检查所选功能并做出反应以双击,并在有所选功能时单击。像这样:

condition: function(mapBrowserEvent) {
  if (selectDoubleClick.getFeatures().getLength() == 0) {
    return mapBrowserEvent.type == 'dblclick';
  } else {
    return mapBrowserEvent.type == 'singleclick';
  }
}

答案 1 :(得分:0)

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

var concludeClickEdit = function(eventListener) {
    if(selectDoubleClick.getFeatures().getLength() !== 0){
             selectDoubleClick.getFeatures().clear();
          }
}

如果单击地图并清除功能,最好是监听事件。