Как изменить триггер для рисования в Leaflet

Всем доброго времени суток!

Для проекта используются карты Leaflet. Т.к. клиентская часть - React-приложение, то используется пакет react-leaflet. Для рисования на карте используется leaflet-draw. Все вроде бы хорошо и ровно, за исключением того, что при рисовании любого элемента, для упрощения возьмем polyline, новый vertex добавляется при нажатии любой кнопки мыши на карте. Т.е. если мне нужно побегать по карте в режиме рисования, то каждое мое перетягивание вызовет появление нового vertex (вершины) для моего объекта.

Анализ сорсов leaflet-draw показал, что они рисуют новую вершину по событию touchstart. Можно ли как-то переопределить это поведение?


Ответы (1 шт):

Автор решения: Ivan Kozlov

После долгих поисков натолкнулся на решение своей проблемы вот тут.

Если говорить именно о моем случае, то мне требовалось пофиксить данную проблему для типов Polygon и Polyline. Согласно варианту, предложенному в ссылке следовало сделать так:

Для полигона L.Draw.Polygon.prototype._onTouch = L.Util.falseFn;

Для полилинии L.Draw.Polyline.prototype._onTouch = L.Util.falseFn;

Однако, в этом случае собрать приложение не удастся из-за ошибки "Property '_onTouch' does not exist on type 'Polygon'/ 'Polyline'", хотя при проходе под дебагом эти методы вполне себе видны. И в качестве решения данной проблемы был создан метод changeBehavior(lDraw:any), на вход которому подается объект L.Draw, а в теле выполняются операции, описанные выше.

→ Ссылка