fix(geo): replace leaflet-draw на custom DIY draw — fix instant-finish bug
leaflet-draw 1.0.4 (последний release 2017) сломан с Leaflet 1.8+: mousedown сразу триггерит mouseup, прямоугольник схлопывается в точку при первом нажатии. На пользовательском скрине quadrate ~5px вместо нарисованной области. Заменил полностью на свою draw-implementation (~80 строк): - Toolbar UI: 3 кнопки (Прямоугольник / Полигон / Очистить) - Active mode highlights ultramarain background - Rectangle: mousedown → preview → mouseup finalize. Map.dragging отключается в rectangle mode чтобы drag не панил карту. - Polygon: click добавляет вершину + dashed mouse-line preview к курсору. Double-click closes (min 3 vertices). doubleClickZoom disabled на map чтобы не конфликтовало. - DrawMode read через ref чтобы listeners не пересоздавались на каждом state change. Удалены deps: - leaflet-draw 1.0.4 (broken) - @types/leaflet-draw Bundle: -68KB minified / -23KB gzip (less broken legacy code). Tests: 89 passed. i18n: RU/EN ключи для новой toolbar.
This commit is contained in:
@@ -266,6 +266,10 @@ i18n
|
||||
'aoi.dialog.title': 'Выбор области интереса (AOI)',
|
||||
'aoi.dialog.help': 'Нарисуйте прямоугольник или полигон. Применяется как фильтр к записям со spatial geometry.',
|
||||
'aoi.dialog.apply': 'Применить',
|
||||
'aoi.dialog.drawRectangle': 'Прямоугольник',
|
||||
'aoi.dialog.drawPolygon': 'Полигон',
|
||||
'aoi.dialog.clear': 'Очистить',
|
||||
'aoi.dialog.polygonHint': 'Клик — добавить точку, двойной клик — закрыть полигон (минимум 3 точки)',
|
||||
'aoi.dialog.mapAriaLabel': 'Карта для выбора области интереса',
|
||||
'aoi.error.noShape': 'Сначала нарисуйте область на карте',
|
||||
'aoi.error.invalid': 'Геометрия некорректна — попробуйте перерисовать',
|
||||
@@ -525,6 +529,10 @@ i18n
|
||||
'aoi.dialog.title': 'Select Area of Interest (AOI)',
|
||||
'aoi.dialog.help': 'Draw a rectangle or polygon. Applied as filter to records with spatial geometry.',
|
||||
'aoi.dialog.apply': 'Apply',
|
||||
'aoi.dialog.drawRectangle': 'Rectangle',
|
||||
'aoi.dialog.drawPolygon': 'Polygon',
|
||||
'aoi.dialog.clear': 'Clear',
|
||||
'aoi.dialog.polygonHint': 'Click adds vertex, double-click closes polygon (min 3 vertices)',
|
||||
'aoi.dialog.mapAriaLabel': 'Map for selecting area of interest',
|
||||
'aoi.error.noShape': 'Draw an area on the map first',
|
||||
'aoi.error.invalid': 'Invalid geometry — please redraw',
|
||||
|
||||
Reference in New Issue
Block a user