2016-05-06 37 views
1

我有類似代碼的地圖:我怎樣才能防止map.on(「點擊」)發射兩次觸摸板點擊一次?

map.on("click", addMarker); 

function addMarker(evt) { 
    marker = new L.marker(...) 
    markerArray.push(marker) 
    doSomething() 
    if(markerArray.length >= 2){ 
     alert() 
    } 
} 

然後,我最近注意到警報是出現當我第一次點擊創建使用一臺筆記本電腦觸摸板的標誌(在Ubuntu的Firefox,如果相關)。當我在條件之前添加斷點時,問題沒有發生。但是當我在條件中添加斷點時,我注意到數組包含兩個相同的標記。我已經通過我的代碼搜索,似乎無法找到多個map.on("click")聽衆或兩個電話pushmarkerArray標記的替代原因,所以我認爲唯一的解釋是不知何故click地圖事件調用addMarker兩次用於「單擊」。

我怎樣才能確保addMarker只有一次點擊「一鍵」?

我應該做一些類似下面的僞代碼嗎?

map.on("click", onClick); 

function onClick(evt){ 

    if addMarker not running { 
     addMarker(evt) 
    } 
    //Else do nothing 
} 
function addMarker(evt) { 
+0

這似乎看好http://stackoverflow.com/a/28610565/4047679 – raphael

回答

0

this answer輕微的調整的伎倆

var lastClick = 0; 

function addMarker() { 
    if (lastClick >= (Date.now() + 20)) 
    return; 
    lastClick = Date.now(); 
    //.... 
}