2015-11-23 27 views
1

我有一個帶有ol.interaction.Select的地圖,當我想放置一些新的對象(點)時,我添加了一個ol.interaction.DrawOpenLayers 3:在DrawInteraction之後省略SelectInteraction

現在,只要我點擊創建PointselectInteraction就會觸發select事件。由於drawend事件在select事件之前觸發,因此我無法確定它是否是真正的select或者是因爲我正在繪製而發生的。

我也嘗試過在drawend事件中激活/關閉selectInteraction,setTimeout,但沒有運氣。只要我激活selectInteraction,就會觸發select事件。

+0

也許你展示了一下你的邏輯。 –

回答

2

顯然,發生這種情況是因爲單擊事件發生在單擊後的251ms。這是一個已知的問題 - >check it here。它是這樣構建的,因此可以識別雙擊。兩種交互活動都是有問題的。有人必須要求。它是選擇嗎?還是它畫?或兩者?所以ol3的願望,如果你把他們都設爲活動,這意味着你希望他們都活躍。 禁用drawstart上的選擇交互,然後在drawend上嘗試啓用您的選擇交互,在drawend事件發生後251ms。像這樣:

setTimeout(function(){ 
selectInteraction.setActive(true) 
},300) 
; 

雖然,這是不好的編程。但我真的找不到解決它的方法。

+0

我不能相信它,但它像一個魅力。我的胃曲折,但我必須這樣實施...非常感謝! – NoRyb

+1

沒有procome amigo。樂意效勞。不要擔心你的胃,只要它有效,它會越來越好。 :)))))) – pavlos