多次选择相同的功能

时间:2017-06-14 15:53:07

标签: javascript html openlayers openlayers-3

我的目标是当我点击图标(功能)时

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

我正在使用Select交互聚焦到功能并打开信息窗口:

/*      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();        
});

Popover是一个用于处理焦点,缩放和信息窗口的类实例。在其中,此循环缩放已经计算出来,但如果已选择该功能并且用户单击该图标,则不会触发选择交互(因为没有选择或取消选择)

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

无论如何在Select交互中实现这个吗?

1 个答案:

答案 0 :(得分:0)

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

  1. 选择要素。跟踪该功能的此功能和步骤编号(即1.Center和信息窗口)。可以从所选事件中获取所选要素。对于要素的跟踪,您可以在要素添加到矢量图层时为其分配ID或名称。
  2. 执行步骤1.中心和信息窗口的功能炎的详细信息。
  3. 然后select.getFeatures().clear();清除所选的功能集,并允许您再次重新选择相同的功能。
  4. 再次选择相同的功能时,请执行步骤2。
  5. 为第3步重复相同的事情。