ZoomMarker 一款用於圖片滾動放大拖動,且可以添加標記的jQuery插件

ZoomMarker

猛戳這裏導航至項目地址。
一款用於圖片滾動放大拖動,且可以添加標記的jQuery插件

在項目中需要實現類似地圖應用那樣的,具有鼠標滾動縮放和拖動功能的插件效果,且可以添加具有回調功能的標記點。在網上找了一圈都沒有找到合適的,所以圖方便自己寫了一個。
如有任何功能問題或改進意見,歡迎反饋,感謝。

Preview效果預覽

點擊這裏查看使用ZoomMarkerEasyLoading構建的圖片拖拽、縮放、標記及加載動畫的示例,使用鼠標或觸屏點擊在圖片上添加標記點,鼠標懸浮在上面查看懸浮提示窗口,使用頂部按鈕實現圖片切換、清空標記點和加載動畫示例等。

Version版本

version date detail
0.0.1 2017.10.25 初始版本,基礎功能
0.0.2 2017.11.3 引入Hammer.js處理鼠標操作
0.0.3 2017.11.8 優化接口API
0.0.4 2017.11.11 修正圖片顯示比例錯誤的問題
0.0.5 2017.11.13 添加圖像居中接口,修復重複初始化問題

Require依賴

name min-version detail
jQuery 1.6 JavaScript的DOM操作框架
jquery.mousewheel 1.6 jQuery鼠標滾輪監聽插件
Hammer.js 2.0.4 多點觸控插件
EasyLoading.js 0.1.0 加載動畫庫

在本例子中,還使用了自行編寫的開源加載動畫插件EasyLoading,該插件同樣需要jQuery支持。
如果您對EasyLoading感興趣,歡迎加星。

Usages用法

引入ZoomMarker的JavaScript和CSS文件

<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標籤

<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}
            ]
    });
})

在上述例子中,你還需要在img/目錄下添加一個名爲moutain.jpg的文件用於顯示圖片,在img/目錄下添加名爲marker.svg的文件作爲marker文件資源,我們已經在該工程對應目錄下添加這兩個文件。
現在你可以看到效果了,單擊鼠標拖動圖片,鼠標滾輪滾動放大縮小圖片,添加的標記也會跟着移動。

Image text

Parameters參數

初始化時可傳入以下可選參數。

param function default
rate 縮放速率 0.2
src 圖片資源 null
width 圖片加載寬度 500
min 圖片最小寬度 300
max 圖片最大寬度 null
markers 標記點參數數組 []
marker_size 默認標記點尺寸 20

rate

缺省值0.2
該浮點型參數決定了圖片滾動放大時的速率,值越大圖片縮放速度越快,範圍{0, 1}。

src

缺省值null,不加載圖片
圖片加載的路徑

width

用於配置圖片加載後的寬度,請不要使用100%之類的相對寬度定位,會影響ZoomMarker的工作。
如果你要使圖片的寬度與父節點寬度相同,可以使用jQuery的方法獲取父節點寬度,或直接獲取”zoom-marker-div”標籤的寬度,如:

$("#zoom-marker-img").parent().width();
$("#zoom-marker-div").width();

min

限定圖片縮放的最小寬度,默認最小寬度爲300px。

max

限定圖片縮放的最大寬度,默認不做限制。

markers

記錄了標記點的參數,包含以下幾個參數。

{
    src: "img/marker.png",   // (required)圖片加載路徑
    x: 500,                  // (required)標記點在圖片中的X座標
    y: 500,                  // (required)標記點在圖片中的Y座標
    click: function(object){
        // 點擊回調方法,object爲marker的jQuery對象
    }
}

marker_size

標記點尺寸只能爲正方形,通過這個參數可以配置標記點的大小,你也可以在”zoomMarker_AddMarker”添加標記點方法中通過參數配置單個標記點的大小。

Methods方法

ZoomMarker的方法全都以”zoomMarker_”開頭,直接在你的圖片標籤jQuery對象上使用jQuery插件的方法調用即可,如清空所有標記點:

    $("#viewArea").zoomMarker_CleanMarker();
name function
zoomMarker_LoadImage(src) 加載圖像
zoomMarker_Zoom(center, scale) 縮放圖片
zoomMarker_Move(x, y) 移動圖片
zoomMarker_AddMarker(marker) 添加標記點
zoomMarker_RemoveMarker(markerId) 刪除標記點
zoomMarker_CleanMarker() 清空標記點
zoomMarker_GetPicSize() 獲取記載圖片尺寸

zoomMarker_LoadImage(src)

用於加載圖像,src傳入圖片URL或本地路徑。

param function
src 圖像資源路徑或URL

zoomMarker_Zoom(center, scale)

縮放圖片。

param function
center 縮放中心點,相對於document的絕對座標
scale 縮放比例,浮點型,如1.5爲縮放到原圖的1.5倍大小

zoomMarker_Move(x, y)

移動圖片位置,笛卡爾座標系,左上角座標爲(0, 0)。

param function
x 圖片左上角的目標縱座標
y 圖片左上角的目標橫座標

zoomMarker_AddMarker(marker)

添加標記點並返回添加標記點的相關參數,marker的配置參數如下表所示。
配置中的”x”和”y”參數均爲標記點在圖像中的座標位置。

param function detault required
x 標記點在圖像中的X座標 null Y
y 標記點在圖像中的Y座標 null Y
src 標記點圖標資源 null Y
size 標記點圖標尺寸 20 N
dialog 懸浮對話框 null N
hint 標記點內部內容 null N
click 標記點擊回調 null N
(1) dialog
param function detault required
value 對話框內容 “” N
style CSS樣式 {} N
offsetX 對話框X座標偏移 0 N
offsetY 對話框Y座標偏移 0 N
(2) hint
param function detault required
value 標記點內容 “” N
style CSS樣式 {} N
(3) return函數返回對象
param function
id 標記點ID
marker 標記點的jQuery對象
param 用戶傳入的標記點配置參數

zoomMarker_RemoveMarker(markerId)

刪除標記點,傳入標記點ID,ID可從”zoomMarker_AddMarker(marker)”返回結構體中的”id”項獲取。

zoomMarker_CleanMarker()

清空所有標記點。

zoomMarker_GetPicSize()

獲取加載圖片的真實尺寸,只有當圖片加載結束的時候纔會返回正確的圖片尺寸。

return函數返回對象
param function
width 圖片寬度
height 圖片高度

Event事件

通過”on”或”bind”監聽ZoomMarker發送的事件。

// 監聽圖片資源加載結束消息,更新UI資源。
$('#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 圖片點擊對象

size

param function
width 圖片寬度
height 圖片高度

markerObj

param function
id 標記點ID
marker 標記點的jQuery對象
param 用戶傳入的標記點配置參數

mouseObj

param function
pageX 點擊位置在document中的X座標
pageY 點擊位置在document中的Y座標
x 點擊位置在圖像座標中的X座標
y 點擊位置在圖像座標中的Y座標
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章