41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
L.Util.extend(L.DomEvent, {
|
|
// inspired by Zepto touch code by Thomas Fuchs
|
|
addDoubleTapListener: function(obj, handler, id) {
|
|
var last,
|
|
doubleTap = false,
|
|
delay = 250,
|
|
touch,
|
|
pre = '_leaflet_',
|
|
touchstart = 'touchstart',
|
|
touchend = 'touchend';
|
|
|
|
function onTouchStart(e) {
|
|
if (e.touches.length != 1) return;
|
|
|
|
var now = Date.now(),
|
|
delta = now - (last || now);
|
|
|
|
touch = e.touches[0];
|
|
doubleTap = (delta > 0 && delta <= delay);
|
|
last = now;
|
|
}
|
|
function onTouchEnd(e) {
|
|
if (doubleTap) {
|
|
touch.type = 'dblclick';
|
|
handler(touch);
|
|
last = null;
|
|
}
|
|
}
|
|
obj[pre + touchstart + id] = onTouchStart;
|
|
obj[pre + touchend + id] = onTouchEnd;
|
|
|
|
obj.addEventListener(touchstart, onTouchStart, false);
|
|
obj.addEventListener(touchend, onTouchEnd, false);
|
|
},
|
|
|
|
removeDoubleTapListener: function(obj, id) {
|
|
var pre = '_leaflet_';
|
|
obj.removeEventListener(obj, obj[pre + 'touchstart' + id], false);
|
|
obj.removeEventListener(obj, obj[pre + 'touchend' + id], false);
|
|
}
|
|
}); |