Fare tekerleği zoom yalnızca haritaya tıkladıktan sonra


19

Ben ile çalışıyorum Broşür JavaScript Kütüphanesi ve benim HTML belgesi için (çalışma) haritayı ekledi. Sayfanın ortasında ve fare tekerleğim ile aşağı kaydırdığımda ve haritaya geldiğimde otomatik olarak haritayı yakınlaştırıyor.

Haritada durmadan sayfada gezinmek istiyorum. Tekerlek zoomunu yalnızca haritaya ilk tıkladıktan sonra etkinleştirmenin bir yolu var mı?

Yanıtlar:


27

Çok basit: scrollWheelZoom: falseseçenekle L.Map oluşturun , ardından bir dinleyici ekleyin:

map.once('focus', function() { map.scrollWheelZoom.enable(); });

Yakınlaştırmayı açmanız gerekiyorsa:

map.on('click', function() {
  if (map.scrollWheelZoom.enabled()) {
    map.scrollWheelZoom.disable();
    }
    else {
    map.scrollWheelZoom.enable();
    }
  });

Teşekkürler :) Bunun için bir yorum başlattım ama çok büyük var bu yüzden aşağıda cevap koymak .
danwild

13

Kabul edilen yanıtın açma / kapatma bileşeni hakkında bir yorum / iyileştirme daha fazlası , bu harika (teşekkürler). Fakat.

Bir harita ile etkileşim kurarken, birçok kullanım durumunda kullanıcının görevlerini yerine getirmek için haritayı da tıklaması gerekir, bu nedenle:

map.on('click', function() {
  if (map.scrollWheelZoom.enabled()) {
    map.scrollWheelZoom.disable();
    }
    else {
    map.scrollWheelZoom.enable();
    }
  });

Kullanıcı gerçekten haritayı kullanmaya başladıktan sonra beklenmedik bir davranışla sonuçlanabilir.

Kullanıcıya biraz daha sezgisel gelebilecek bir şey önerebilirim - fare kaydırmayı devre dışı bırakmak için haritayı tıklayın .

Örneğin scrollWheelZoom: false, yukarıdaki gibi ayarlayın , ardından:

map.on('focus', function() { map.scrollWheelZoom.enable(); });
map.on('blur', function() { map.scrollWheelZoom.disable(); });

1
focus/ İşlevini kullanmak blurkesinlikle harita işlevselliğini çok daha sezgisel hale getirir.
doublesharp

Kabul. Odak / bulanıklık yaklaşımı mükemmeldir. Teşekkürler!
sstringer

Harika, ancak harita tam ekransa ve kullanıcı hızlı bir şekilde arka arkaya kaydırırsa (bir saniye içinde birkaç yönlü değişiklik yaparsa) kaydırmayı devre dışı bırakmak için bir araca ihtiyaç duyar. Bu karışık yukarı ve aşağı kaydırma, takıldıklarında gerçekleşir ve üstündeki veya altındaki içeriğe erişmek için tam tarayıcı haritasından ayrılamaz.
Loren

6

Uyku , işinizi kolaylaştıracak ve çok yapılandırılabilir

Temel olarak, kaydırma olaylarını gerekmediklerinde kapatır ve haritanızı gerektiğinde "uyandırır".

Ben kod sonrası istiyorum, ama varsayılan olasılıkla ötesinde bir şey gerekmez, böylece, doğru olsun gibi görünüyor <script src="path/to/leaflet-sleep.js"></script>ve siz gibi bir haritaya sahip olursunuz bu .


0

Bunu sadece şu 3 satırla yapabilirsiniz:

map.scrollWheelZoom.disable();
map.on('focus', () => { map.scrollWheelZoom.enable(); });
map.on('blur', () => { map.scrollWheelZoom.disable(); });

veya:

map.scrollWheelZoom.disable();
this.map.on('click', () => { this.map.scrollWheelZoom.enable();});
this.map.on('mouseout', () => { this.map.scrollWheelZoom.disable();});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.