Broşür etkileşimini geçici olarak devre dışı bırak


20

Nasıl Leaflet.js içinde Mapview zoming / draging geçici olarak devre dışı bırakabilirim Birçok yolu denedim ama herhangi bir şans olmadan. Geçici hale getirmek önemlidir ve ayrıca tekrar etkinleştirme seçeneğine ihtiyacım var.


Bunu CSS ile nasıl yapacağınız hakkında bir fikriniz var mı? Bir medya sorgusu kullanarak mobil cihazlarda sürüklemeyi devre dışı bırakmam gerekiyor. Üstüne saydam bir katman koymayı denedim ama o katman boyunca sağ tıklar. Hatta işaretçilerle oynadım ama şansım olmadı. Uygun yaklaşım, büyük olasılıkla -webkit-user-drag: none; ama bulabildiğim her elemente uyguladım ve hala şansım yok. Teşekkürler.

Bu soruyu aşağıda cevapladım .
hayatbiralem

Yanıtlar:


33

yapmak isteyeceksiniz (haritanızın çağrı olduğunu varsayarak map)

map.dragging.disable();
map.touchZoom.disable();
map.doubleClickZoom.disable();
map.scrollWheelZoom.disable();
map.boxZoom.disable();
map.keyboard.disable();
if (map.tap) map.tap.disable();
document.getElementById('map').style.cursor='default';

ile tekrar aç

map.dragging.enable();
map.touchZoom.enable();
map.doubleClickZoom.enable();
map.scrollWheelZoom.enable();
map.boxZoom.enable();
map.keyboard.enable();
if (map.tap) map.tap.enable();
document.getElementById('map').style.cursor='grab';

2
Çok teşekkür ederim. Çok yanlış görünüyordu _ Bunu yapmak için tek bir yöntem olması gerektiğini düşündüm.
Bernhard

1
Bu çözümün bazı sorunları var: Fare imleci hala bir el. Haritada dokunma hareketleriyle sayfa kaydırma mümkün değildir. Bir Popover'ın açılması haritayı hareket ettirdiğinde, asla geri kaymaz.
netAction

@netAction, Dokunmatik hareket kaydırma sorununa bir çözümünüz var mı?
Chris Fremgen

@ChrisFremgen: map.dragging.disable (); haritanın kaydırma hareketlerini almayı durdurduğu hileyi yapar.
netAction

Sadece zoomIn'i devre dışı bırakmanın bir yolu var mı?
howard.D

5

Her bir işleyiciyi manuel olarak devre dışı bırakmak istemiyorsanız, bunların tümünü döngüye sokabilir ve devre dışı bırakabilir / etkinleştirebilirsiniz.

Devre Dışı

map._handlers.forEach(function(handler) {
    handler.disable();

});

etkinleştirme

map._handlers.forEach(function(handler) {
    handler.enable();

});

Herkese açık olmayan özellikleri (_handlers) kullanmanın, değişiklik yapmadığı garanti edilmediğinden broşür yama sürümü değişikliklerinde bile kodunuzda hataya neden olabileceğine dikkat edin. Özellik isteği broşüre gönderilmelidir;)
Luckylooke

0

Sanırım haritanızı yardımcı bir kapla sarabilir ve basit CSS sınıfıyla devre dışı bırakabilirsiniz is-locked.

İşte bahsettiğim şey:

.map-container {
  position: relative;
}

.map-container .map {
  position: relative;
  z-index: 1;
}

.map-container.is-locked:after {
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;

  content: "";
  display: block;
}

Umut ediyorum bu yardım eder.

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.