setTimeout()
yondashuvini amalga oshirishning yanada toza usuli bu bir marta bosish uchun maxsus hodisalarni ishga tushirishdir.
Quyidagi funksiya har qanday Google Xaritalar interfeysi obyektini (masalan, xarita, marker, koʻpburchak va h.k.) oladi va ikkita maxsus hodisani oʻrnatadi:
singleclick
: agar boshqa bosishlar sodir bo'lmasa, bosishdan keyin 400 ms chaqiriladi
firstclick
: bosish hodisasi sodir bo'lganda chaqiriladi, agar oxirgi 400 ms ichida bosish sodir bo'lmagan bo'lsa (bu foydalanuvchiga darhol bosish bo'yicha fikr-mulohazalarni ko'rsatish uchun qulaydir)
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();
}
}
Siz undan shunday foydalanishingiz mumkin:
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