最近做的一个拖拽定位工具类,主要应用场景为各种IOT项目的示意图,设备定位功能
目前分为两种模式
- Canvas:地图由
Canvas
绘制,支持拖拽和缩放,包含位点数据的管理和一系列配置方法,相比定位版,使用起来更加方便,功能更加齐全,推荐使用 - 定位:绝对定位版本,比较简易,主要提供了拖拽方法,事件发送和位点绝对定位数据的转换,不包含对dom结构和数据的管理,作者已放弃治疗,请慎用
GitHub
仓库地址: ‘https://github.com/gitliyu/drag-map’
Demo
Demo: ‘https://www.liyu.fun/demo/drag-map’
安装
1 | npm install drag-map |
使用
1 | import DragMap from 'drag-map' |
Canvas版本
默认html结构如下,可在配置项中修改
1 | <div id="drag-list"> |
配置项
在实例化时可接受参数,除type
和options
外均为非必填项,以下为默认值
1 | new DragMap({ |
其中options
为拖拽位点图片数据,格式如下
1 | { |
位点数据data
格式如下
1 | [{ |
位点标签样式labelStyle
格式如下
1 | { |
事件
对于拖拽各个过程的数据,都会以事件的形式发送出来,监听方式如下
1 | const dragMap = new DragMap(); |
以下是所有事件介绍
- dragstart(data, event) 拖拽开始
- dragenter(data, event) 进入目标区域
- dragover(data, event) 在目标区域中拖拽
- drop(data, event) 拖拽完成
- dragleave(data, event) 拖拽离开目标区域
- click(data, event) 点击位点图像
- delete(data) 点击位点删除按钮
- mouseover(data, event) 鼠标经过位点
- mouseleave(data, event) 鼠标移出位点
事件接受参数event
为原生事件参数,data
为当前位点数据格式同实力化格式一致
方法
操作类
- refresh() 当dom元素发生变化后调用,重新刷新dom节点并绑定事件
- draw() 重绘画布
- clear() 清空数据并重置画布,保留背景图
数据类
setOptions(options) 设置可选项数据,返回
Promise
,设置后需要等待图片加载完成再进行下一步1
2
3dragMap.setOptions(options).then(() => {
// do something
})setData(data) 设置位点数据
- getData() 获取位点数据
配置类
- setBgImage(url) 设置背景图
- setScale(scale) 设置当前缩放倍数
- setMinScale(scale) 设置最小缩放倍数,默认
1
- setMaxScale(scale) 设置最大缩放倍数,默认
3
- setScaleStep(step) 设置每次缩放比例,默认
0.05
setImageSize(width, height) 设置位点图片大小,默认为图片本身大小,
height
不传时默认和width
相同1
2dragMap.setImageSize(70)
dragMap.setImageSize(50, 60)setDeleteImage(url) 设置删除按钮图片
- setDeleteImageSize(size) 设置删除按钮尺寸
setOptionDisabled(index, disabled) 设置选项禁用
1
2dragMap.setOptionDisabled(1) // 索引为1的禁用
dragMap.setOptionDisabled(2, false) // 取消禁用setLabelStyle(style) 设置label样式
1
2
3
4
5
6dragMap.setLabelStyle({
font: '16px bold 黑体',
fillStyle: '#333',
margin: 15,
position: 'bottom'
})
定位版本
默认html结构为
1 | <div id="drag-list"> |
配置项
在实例化时可接受参数,以下为默认值
1 | new DragMap({ |
事件
- dragstart(data, event) 拖拽开始
- dragenter(data, event) 进入目标区域
- dragover(data, event) 在目标区域中拖拽
- drop(data, event) 拖拽完成
- dragleave(data, event) 拖拽离开目标区域
移动端只支持drop事件
相比于canvas
版本,data
数据格式有所不同
1 | { |
方法
- refresh() 当dom元素发生变化后调用,重新刷新dom节点并绑定事件