Jak mogę tymczasowo wyłączyć Zoming / Draging Mapview w Leaflet.js Próbowałem na wiele sposobów, ale bez powodzenia. Ważne jest, aby uczynić go tymczasowym i potrzebuję również opcji, aby włączyć ponownie.
Jak mogę tymczasowo wyłączyć Zoming / Draging Mapview w Leaflet.js Próbowałem na wiele sposobów, ale bez powodzenia. Ważne jest, aby uczynić go tymczasowym i potrzebuję również opcji, aby włączyć ponownie.
Odpowiedzi:
chcesz to zrobić (zakładając, że twoja mapa to połączenie 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';
włącz ponownie za pomocą
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';
Jeśli nie chcesz ręcznie wyłączać każdego modułu obsługi, możesz zapętlić wszystkie z nich i wyłączyć / włączyć je.
Wyłączyć
map._handlers.forEach(function(handler) {
handler.disable();
});
Włączyć
map._handlers.forEach(function(handler) {
handler.enable();
});
Myślę, że możesz owinąć mapę kontenerem pomocniczym i możesz ją wyłączyć za pomocą prostej klasy CSS, takiej jak is-locked
.
Oto o czym mówię:
.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;
}
Mam nadzieję, że to pomoże.