Более чистый способ реализации подхода setTimeout()
— запускать настраиваемые события для одиночных кликов.
Следующая функция принимает любой объект интерфейса Google Maps (например, карту, маркер, многоугольник и т. д.) и устанавливает два пользовательских события:
singleclick
: вызывается через 400 мс после клика, если других кликов не было
firstclick
: вызывается всякий раз, когда происходит событие щелчка, если щелчок уже не произошел в течение последних 400 мс (это удобно для отображения какой-либо немедленной обратной связи с пользователем).
function addSingleClickEvents(target) {
var delay = 400;
var clickTimer;
var lastClickTime = 0;
google.maps.event.addListener(target, 'click', handleClick);
google.maps.event.addListener(target, 'dblclick', handleDoubleClick);
function handleClick(e) {
var clickTime = +new Date();
var timeSinceLastClick = clickTime - lastClickTime;
if(timeSinceLastClick > delay) {
google.maps.event.trigger(target, 'firstclick', e);
clickTimer = setTimeout(function() {
google.maps.event.trigger(target, 'singleclick', e);
}, delay);
} else {
clearTimeout(clickTimer);
}
lastClickTime = clickTime;
}
function handleDoubleClick(e) {
clearTimeout(clickTimer);
lastClickTime = +new Date();
}
}
Вы можете использовать его так:
var map = ....
addSingleClickEvents(map);
google.maps.event.addListener(map, 'singleclick', function(event) {
console.log("Single click detected at: " + event.latLng);
}
person
James
schedule
08.05.2015