2017-06-14 94 views
0

我的目标是,当我点击图标(功能)选择相同的功能,多次

  • 一次:中心和信息窗口
  • 第二次:缩小到9
  • 第三次:放大到17并切换到卫星视图。

我现在用的是选择互动聚焦在功能和开放的信息窗口:

/*  Click Popover  */ 
selectClick = new ol.interaction.Select({ 
    condition: ol.events.condition.click, 
    multi: false, 
    layers: [vectorLayer, potentialsLayer] 
}); 
map.addInteraction(selectClick); 

selectClick.on('select', (event) => { 
    if (e.selected.length !== 0) { 
     const feature = event.selected[0]; 
     const site = feature.get("site"); 

     if (feature.get('layer') == "main") 
      popover.open(site, true); 

    } else 
     popover.close();   
}); 

酥料饼是用于处理聚焦,变焦和信息窗口类的实例。其中,这个循环缩放已经制定出来了,但是如果该功能已经被选中并且用户点击该图标,则选择的交互将不会触发(因为没有选择或取消选择)

我意识到我可以回到map.on('click'...) ,但我认为选择的互动更清晰。

无论如何在选择交互中实现这一点?

回答

0

我会这样做。每个功能都有3个步骤。

  1. 选择功能。跟踪此功能和步骤编号(即1.Center和信息窗口)。选定的特征可以从选定的事件中获取。要追踪特征,可以在特征添加到矢量图层时为特征指定id或名称。
  2. 做第1步的功能性炎症的细节。中心和信息窗口。
  3. 然后select.getFeatures().clear();清除所选要素集合并允许您再次重新选择相同的要素。
  4. 当再次选择了相同的功能,执行步骤2.没有
  5. 为重复步骤3
+0

一样东西我认为同样的但随后的问题就变成了取消:由于没有功能选择,当你从该功能按下其他地方时,它不会触发取消选择它(即关闭信息窗口)。 – Hunter