1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yeye0922-ZoomMarker

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ZoomMarker

ZoomMarker — это плагин jQuery, который позволяет масштабировать и перетаскивать изображения с возможностью добавления пометок.

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

Если у вас есть какие-либо вопросы или предложения по улучшению, пожалуйста, сообщите нам. Мы будем рады получить обратную связь.

Предварительный просмотр

Здесь вы можете увидеть пример использования ZoomMarker и EasyLoading для создания анимации перетаскивания, масштабирования, добавления пометок и загрузки изображений. Вы можете добавлять пометки на изображение, нажимая на него мышью или касаясь экрана. При наведении курсора на изображение появляется всплывающее окно с подсказкой. С помощью верхней кнопки можно переключать изображения, очищать пометки и запускать анимацию загрузки.

Здесь вы можете посмотреть пример с разделением области на секции.

Image text Image text

Версия

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, добавьте звезду.

Использование

1. Быстрое использование

Включите файлы 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/, который будет использоваться в качестве файла маркера. Эти файлы уже добавлены в соответствующий каталог проекта. Теперь вы можете видеть эффект. Перетаскивайте изображение мышью, используйте колесо прокрутки для увеличения и уменьшения масштаба изображения, и отметки будут перемещаться вместе с изображением.

Image text

2. Использование Canvas для рисования

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()

Некоторые пользователи сообщают, что после загрузки нового изображения на мобильном устройстве маркеры смещаются, но восстанавливаются после ручного перетаскивания изображения. Предполагается, что это связано с тем, что разные браузеры вызывают обратные вызовы при загрузке изображений в разное время, поэтому добавлен этот интерфейс, чтобы позволить пользователям вручную перезагрузить маркеры.

Event события

Слушайте события, отправленные 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} Положение и комбинированный объект маркера

Size

param function
width Ширина изображения
height Высота изображения

MarkerObj

param function
id ID маркера
marker jQuery объект маркера
param Пользовательский параметр маркера

MouseObj

param function
pageX Координаты X щелчка в документе
pageY Координаты Y щелчка в документе
x Координаты X щелчка на изображении
y Координаты Y щелчка на изображении

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yeye0922-ZoomMarker.git
git@api.gitlife.ru:oschina-mirror/yeye0922-ZoomMarker.git
oschina-mirror
yeye0922-ZoomMarker
yeye0922-ZoomMarker
master