Смещение карты только при двойном касании в Leaflet

На мобильных устройствах с сенсорным экраном обычно нет такого элемента ввода информации как мышь и соответствующих событий — mousewheel. Все манипуляции производится касаниями к экрану.

Листая касанием одного пальца, вы прокручиваете веб-страницу, но если вы попадаете на область контейнера карты, то она интерпретирует данное действие как dgagging. То есть вы начинаете смещать карту, вместо прокрутки страницы.

А если слой карты оказывается ещё и больше или равен по высоте логическому разрешению устройства вывода, то пользователь оказывается «заперт» в карте, т.к. не может «промотать» её контейнер.

Потому для пролистывания карты часто используют двойное касание (то есть касания двумя или более пальцами), как для масштабирования.

Теперь посмотрим как заставить leaflet карту обработать только мультикасания для выполнения смещения карты в контейнере.

Теория очень проста — при касании в одной точке, мы отключаем dragging опцию вообще, тогда карта перемещается вместе со всем документом. При касании в нескольких точках — опцию dragging нужно включить.

На практике это реализуется в виде следующего кода на js.

Второй обработчик можно не использовать, тогда (наверное) движение, начатое двумя касаниями, можно будет продолжать и в одно касание. Можете поэкспериментировать :).

Написать комментарий

Мало букафф? Читайте есчо !

Leaflet использование SVG картинки вместо географической карты

Апрель 28, 2018 г.

Javascript библиотека Leaflet для организации работы с картами помимо гео-карт позволяет работать с произвольными наложениями в режиме "без гео-карты". ...

Читать

Перетачиваем popup в leaflet для показа его справа

Май 10, 2018 г.

В leaflet для элемента tooltip реализовано свойство direction, в вот для popup - нет. Возможно, добавят в будущих обновлениях. Но сейчас, если у вас появилась ...

Читать

 

Комментарии к «Смещение карты только при двойном касании в Leaflet»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: