💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمد محمدی
فرق گذاشتن بین event‌های dblclick و click روی نقشه
امیر صالحی حل شده توسط امیر صالحی

سلام من نقشه رو جوری طراحی کردم که وقتی روش کلیک بشه یه دایره بکشه و تموم مکان‌های ثبت شده رو توی اون دایره نشون بده و event دابل کلیک رو ست کردم برای افزودن مکان و باز کردن مدال ولی الان مشکل اینه که event کلیک اجرا میشه و به دابل کلیک نمیرسه و مانعش میشه سوالم اینه که راه حلی وجود داره که بشه یه تاخیری ایجاد کرد تا کاربر بتونه دابل کلیک کنه و event کلیک جلوشو نگیره؟

خیلی گشتم و نتونستم راه حلی پیدا کنم خیلی ممنون

سلام و احترام

میتونید از setTimeOut استفاده کنید و یه زمان براش تعیین کنید که توی مثال پایین نوشته 200 میلی ثانیه (برای click)، ینی بعد از 200 میلی ثانیه اون event اونجا قابل اجرا شدنه

map.on('click', function(event) {
  if (_dblClickTimer !== null) {
    return;
  }
  _dblClickTimer = setTimeout(() => {
    // real 'click' event handler here
    _dblClickTimer = null;
  }, 200);
})
.on("dblclick", function() {
  clearTimeout(_dblClickTimer);
  _dblClickTimer = null;
  // real 'dblclick' handler here (if any). Do not add anything to just have the default zoom behavior
})

حالا یه تابع دیگه استفاده شده به اسم clearTimeOut این تابع جلوگیری میکنه از اجرای event بالایی که click بود. 

حالا شما میتونید طبق چیزی که میخواید این کد رو شخصی سازی کنید و ازش استفاده کنید

بهترین پاسخ
امیر صالحی ۲۴ بهمن ۱۳۹۹، ۰۷:۰۵

سلام کار نکرد متاسفانه ارور میده یه نگاهی بهش بندازین ممنون

محمد محمدی ۲۶ بهمن ۱۳۹۹، ۱۵:۳۳