Select 开放层:持久选择交互功能存在问题
在我的应用程序中,我必须开发一个系统,允许用户通过双击放大集群。 一切都正常,但问题是双击在地图上添加一个特征(一个点),它是持久的(如果我选择的不是集群而是单个元素,即使我已经指定features.length>=2,它也会替换我选择的功能,因此只有当用户双击集群时,双击才有效,但情况并非如此)。 我希望选择交互只执行集群的缩放,而不是事件在地图上添加功能。我如何解决这个问题Select 开放层:持久选择交互功能存在问题,select,cluster-computing,zooming,openlayers,double-click,Select,Cluster Computing,Zooming,Openlayers,Double Click,在我的应用程序中,我必须开发一个系统,允许用户通过双击放大集群。 一切都正常,但问题是双击在地图上添加一个特征(一个点),它是持久的(如果我选择的不是集群而是单个元素,即使我已经指定features.length>=2,它也会替换我选择的功能,因此只有当用户双击集群时,双击才有效,但情况并非如此)。 我希望选择交互只执行集群的缩放,而不是事件在地图上添加功能。我如何解决这个问题 var selectDoubleClick = new ol.interaction.Select({ mult
var selectDoubleClick = new ol.interaction.Select({
multi: true,
condition: ol.events.condition.doubleClick,
layer: this.clusterLayer,
style: this.selectedClusterStyle
});
selectDoubleClick.on('select',function(event) {
var eventFeature = event.selected[0];
var features = eventFeature.get('features');
if (features.length>=2){
var extent = ol.extent.createEmpty();
features.forEach(function(feature) {
ol.extent.extend(extent, feature.getGeometry().getExtent());
});
this.getMap().getView().fit(extent, {padding: [150, 150, 150, 150]})
}
});
this.map.addInteraction(selectDoubleClick);
我还尝试设置selectDoubleClick
样式:null
,但这并不能解决我的问题根据下面的讨论,我最终找到了一个解决方案:
特别是:
ol.interaction.Select选定功能将添加到内部
非托管层
这就是为什么即使基础要素
层不是
在使用缩放时,可以取消选择选定的要素
选择_interaction.getFeatures().clear()(就像单击鼠标一样)
所以我编辑我的代码如下:
selectDoubleClick.on('select',function(event) {
var eventFeature = event.selected[0];
var features = eventFeature.get('features');
if (features.length>1){
var extent = ol.extent.createEmpty();
features.forEach(function(feature) {
ol.extent.extend(extent, feature.getGeometry().getExtent());
});
this.getMap().getView().fit(extent, {padding: [150, 150, 150, 150]})
}else{
selectDoubleClick.getFeatures().clear()
}
});
this.map.addInteraction(selectDoubleClick);