ZoomMarker — это плагин jQuery, который позволяет масштабировать и перетаскивать изображения с возможностью добавления пометок.
В рамках проекта необходимо реализовать функционал, подобный тому, что используется в картографических приложениях: возможность масштабирования и перемещения изображений с помощью мыши или сенсорного экрана, а также добавление пометок с функцией обратного вызова. В интернете не удалось найти подходящий плагин, поэтому было решено создать свой собственный.
Если у вас есть какие-либо вопросы или предложения по улучшению, пожалуйста, сообщите нам. Мы будем рады получить обратную связь.
Здесь вы можете увидеть пример использования ZoomMarker и EasyLoading для создания анимации перетаскивания, масштабирования, добавления пометок и загрузки изображений. Вы можете добавлять пометки на изображение, нажимая на него мышью или касаясь экрана. При наведении курсора на изображение появляется всплывающее окно с подсказкой. С помощью верхней кнопки можно переключать изображения, очищать пометки и запускать анимацию загрузки.
Здесь вы можете посмотреть пример с разделением области на секции.
version | date | detail |
---|---|---|
0.1.9 | 2020.9.25 | Исправлена проблема с обратным вызовом интерфейса сообщений при загрузке marker |
0.1.8 | 2020.8.2 | Добавлен интерфейс обратного вызова для завершения перемещения пометок |
0.1.7 | 2020.1.2 | Добавлен интерфейс для повторной загрузки пометок |
0.1.6 | 2019.6.23 | Исправлено логическое ограничение масштабирования изображения |
0.1.5 | 2019.4.9 | Добавлены интерфейсы для сброса положения и размера изображения |
0.1.4 | 2019.4.1 | Добавлена функция блокировки границ при перемещении изображения |
0.1.3 | 2019.4.1 | Исправлены проблемы с перемещением и срабатыванием пометки при нажатии на изображение на мобильных устройствах с Chrome V8 |
0.1.2 | 2019.2.21 | Добавлена опция перемещения пометки |
0.1.1 | 2019.2.21 | Добавлен параметр ограничения масштабирования |
0.1.0 | 2019.2.13 | Добавлен слой рисования Canvas для улучшения взаимодействия с несколькими слоями |
0.0.11 | 2019.2.7 | В среде с несколькими слоями при щелчке по другому слою отправляется сообщение о переключении слоя |
0.0.10 | 2018.11.6 | Решена проблема с порядком итерации изображений и пометок в нескольких слоях |
0.0.9 | 2018.11.5 | Решена проблема несоответствия размеров изображения после масштабирования |
0.0.8 | 2018.9.25 | Поддержка одновременного отображения нескольких элементов управления изображениями |
0.0.7 | 2018.9.25 | Добавлены функции разрешения и запрета перетаскивания изображения |
0.0.6 | 2018.7.24 | Решено проблему неопределённости контекста jQuery |
0.0.5 | 2017.11.13 | Добавлен интерфейс центрирования изображения и исправления проблемы повторного инициализации |
0.0.4 | 2017.11.11 | Исправлена ошибка отображения пропорций изображения |
0.0.3 | 2017.11.8 | Оптимизация API интерфейса |
0.0.2 | 2017.11.3 | Внедрение Hammer.js для обработки операций с мышью |
0.0.1 | 2017.10.25 | Начальная версия с базовыми функциями |
name | min-version | detail |
---|---|---|
jQuery | 3.3.1 | JavaScript-фреймворк для работы с DOM |
jquery.mousewheel | 1.6 | Плагин jQuery для отслеживания колеса прокрутки мыши |
Hammer.js | 2.0.4 | Многоточечный сенсорный плагин |
EasyLoading.js | 0.1.0 | (Необязательно) Библиотека анимации загрузки |
В этом примере также используется открытый исходный код EasyLoading, который является плагином для анимации загрузки и также требует поддержки jQuery. Если вам интересен EasyLoading, добавьте звезду.
Включите файлы JavaScript и CSS ZoomMarker:
<link rel="stylesheet" href="css/zoom-marker.css">
<script src="js/zoom-marker.js"></script>
Включите сторонние библиотеки зависимостей:
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/jquery.mousewheel.min.js"></script>
<script src="js/hammer.min.js"></script>
Для примера используется анимация загрузки изображения. Для этого вам также потребуется включить плагин EasyLoading, который можно использовать отдельно. Если анимация загрузки не требуется для вашего проекта, её можно не включать.
<link rel="stylesheet" href="css/easy-loading.css">
<script src="js/easy-loading.js"></script>
Добавьте необходимые HTML-теги. Обратите внимание, что тег img должен содержать уникальный атрибут id.
<div id="zoom-marker-div" class="zoom-marker-div">
<img class="zoom-marker-img" id="zoom-marker-img" alt="..." name="viewArea" draggable="false"/>
</div>
Вызовите метод ready() для инициализации:
$(document).ready(function () {
$('#zoom-marker-img').zoomMarker({
src: "img/mountain.jpg",
rate: 0.2,
width: 600,
max: 3000,
markers:[
{src:"img/marker.svg", x:500, y:500}
]
});
})
В приведённом выше примере вам также необходимо добавить файл mountain.jpg в каталог img/ для отображения изображения и файл marker.svg в каталог img/, который будет использоваться в качестве файла маркера. Эти файлы уже добавлены в соответствующий каталог проекта. Теперь вы можете видеть эффект. Перетаскивайте изображение мышью, используйте колесо прокрутки для увеличения и уменьшения масштаба изображения, и отметки будут перемещаться вместе с изображением.
Canvas рисует слой поверх div-тега изображения, позволяя рисовать на нём фигуры. Чтобы использовать функцию Canvas, необходимо вручную настроить enable_canvas на true при инициализации объекта ZoomMarker.
$('#zoom-marker-img').zoomMarker({
src: "img/mountain.jpg",
rate: 0.2,
width: 400,
max: 3000,
markers:[
{src:"img/marker.svg", **offsetX | 对话框X坐标偏移 | 0 | N |**
| offsetY | 对话框Y坐标偏移| 0 | N |
Hint:
param | function | detault | required |
---|---|---|---|
value | 标记点内容 | "" | N |
style | CSS样式 | {} | N |
Return函数返回对象:
param | function |
---|---|
id | 标记点ID |
marker | 标记点的jQuery对象 |
param | 用户传入的标记点配置参数 |
ZoomMarker_RemoveMarker(markerId)
Удаление маркера, передаётся ID маркера, который можно получить из структуры, возвращаемой функцией zoomMarker_AddMarker(marker).
ZoomMarker_CleanMarker()
Очистка всех маркеров.
ZoomMarker_GetPicSize()
Получение реальных размеров загружаемого изображения, возвращает правильные размеры только после загрузки изображения.
Return функции возвращает объект:
param | function |
---|---|
width | ширина изображения |
height | высота изображения |
ZoomMarker_EnableDrag(enable)
Установка разрешения на перетаскивание изображения.
ZoomMarker_TopIndexZ()
Изображение и соответствующий маркер имеют иерархические отношения, этот метод помещает текущее изображение и маркер в начало иерархии.
ZoomMarker_Canvas()
При инициализации изображения необходимо установить для параметра enable_canvas значение true. Получает контекст Canvas, использует методы рисования Canvas для рисования графики на изображении. Обратите внимание, что координаты чертежа основаны на разрешении изображения.
ZoomMarker_CanvasClean()
Очищает данные чертежа Canvas.
ZoomMarker_ResetImage()
Сбрасывает размер и положение изображения, включая информацию о маркерах и Canvas.
ZoomMarker_ReloadMarkers()
Некоторые пользователи сообщают, что после загрузки нового изображения на мобильном устройстве маркеры смещаются, но восстанавливаются после ручного перетаскивания изображения. Предполагается, что это связано с тем, что разные браузеры вызывают обратные вызовы при загрузке изображений в разное время, поэтому добавлен этот интерфейс, чтобы позволить пользователям вручную перезагрузить маркеры.
Слушайте события, отправленные ZoomMarker через «on» или «bind».
// Слушаем сообщение о завершении загрузки ресурсов изображения, обновляем ресурсы пользовательского интерфейса.
$('#zoom-marker-img').on("zoom_marker_img_loaded", function(event, size){
console.log("image has been loaded with size: "+JSON.stringify(size));
/** Обновление операций UI **/
...
});
name | function | param | detail |
---|---|---|---|
zoom_marker_img_load | Начало загрузки изображения | src | Путь или URL к ресурсу изображения |
zoom_marker_img_loaded | Изображение загружено | size | Размеры изображения |
zoom_marker_click | Нажатие на маркер | markerObj | Объект маркера |
zoom_marker_mouse_click | Нажатие на изображение | mouseObj | Объект щелчка изображения |
zoom_marker_move_end | Перемещение маркера завершено | {x, y, markerObj} | Положение и комбинированный объект маркера |
param | function |
---|---|
width | Ширина изображения |
height | Высота изображения |
param | function |
---|---|
id | ID маркера |
marker | jQuery объект маркера |
param | Пользовательский параметр маркера |
param | function |
---|---|
pageX | Координаты X щелчка в документе |
pageY | Координаты Y щелчка в документе |
x | Координаты X щелчка на изображении |
y | Координаты Y щелчка на изображении |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )