问题描述:如果一个marker添加了单击事件函数和双击事件函数,在双击marker时,会执行两次单击函数和一次双击函数。
解决方式:在单击事件函数里通过定时器控制延迟执行。单击事件函数和双击事件函数里都先清定时器。
扩展:一般的dom的单击、双击 也可以这么处理。
var timer;L.marker([51.5, -0.09]).addTo(map).on('click',function(e){clearTimeout(timer) // 先清定时器timer = setTimeout(()=>{ // 再延迟执行console.log(e)},250);}).on('dblclick', function(e) {clearTimeout(timer); // 先清定时器console.log(e) // 不必延迟执行});