-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
new feature 🆕Новая фича или запрос на нееНовая фича или запрос на нееrefactoring 🧹Закрытие технического долгаЗакрытие технического долга
Description
Сейчас для масштабирования и перетаскивания карты используется сторонний компонент PinchScrollZoom. Он добавляет зависимость и ограничивает управление поведением (зум, позиционирование, двойной тап и т.д.). Нужно заменить его на собственное решение — рендерить SVG напрямую через и использовать @vueuse/gesture + @vueuse/motion для обработки жестов и плавных анимаций.
Что нужно сделать:
- Изучить:
- как работает useDrag, usePinch, useWheel из @vueuse/gesture;
- как применять useMotionProperties и useSpring из @vueuse/motion для плавных трансформаций (x, y, scale).
- Удалить компонент PinchScrollZoom из шаблона.
- Вместо этого:
- обернуть SVG в обычный контейнер <div class="zoom-container">;
- добавить обработку жестов для wheel, drag и pinch событий.
- Реализовать функционал:
- масштабирование колесиком и pinch-жестом с ограничениями (1×–3×);
- перемещение изображения при удержании (drag);
- двойной тап — сброс положения и масштаба в начальное состояние.
- Добавить плавность:
- использовать useSpring для сглаживания изменения позиции и масштаба;
- задать начальные значения { x: 0, y: 0, scale: 1 }.
- Проверить:
- изображение не «выпрыгивает» за границы контейнера;
- drag не срабатывает при обычном клике.
Чтобы картинка не прыгала, можно добавить в CSS:
img {
user-drag: none;
-webkit-user-drag: none;
}Giovaaanniii
Metadata
Metadata
Assignees
Labels
new feature 🆕Новая фича или запрос на нееНовая фича или запрос на нееrefactoring 🧹Закрытие технического долгаЗакрытие технического долга
Type
Projects
Status
No status