mediagoblin/extlib/leaflet/src/dom/DomEvent.DoubleTap.js
2012-01-25 23:42:04 +01:00

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);
}
});