2017-06-14 93 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