介绍
在前端开发中,常常需要对地图进行操作和展示。然而,原生的地图 API 并不够简洁和方便。为了提高开发效率,社区出现了许多优秀的地图工具库,其中,vue-map-utils 是一款非常实用的工具库。
vue-map-utils 是一款基于 Vue.js 的地图工具库,它封装了一系列对地图进行绘制、操作和交互的函数和组件。相比原生的地图 API,它更加易用、简单明了,可以节约开发者的开发时间和精力。
下文将详细介绍 vue-map-utils 的安装、使用,还会给出具体的示例代码,希望能帮助读者更好地使用这款工具。
安装
首先,需要在项目中安装 vue-map-utils。可以使用 npm 命令进行安装:
npm install vue-map-utils -S
也可以使用 yarn 进行安装:
yarn add vue-map-utils
使用
安装好 vue-map-utils 之后,就可以在项目中使用它了。下面是使用步骤:
- 引入并注册组件
import Vue from 'vue' import VueMapUtils from 'vue-map-utils' Vue.use(VueMapUtils)
- 在项目中使用组件
-- -------------------- ---- ------- ---------- ----- ---- ----------- ------ ----------- -------- ------ ------- - --------- - -------------- -- -------- - --------- - ----- --- - ------------------ -- --------- - - - ---------
这样,就可以在项目中轻松使用 vue-map-utils 提供的组件和方法了。
组件和方法
vue-map-utils 提供了很多优秀的组件和方法,这里只介绍常用的一些:
Map 组件
Map 组件是 vue-map-utils 中最基本的组件,它封装了地图的初始化、销毁等操作,并在其中集成了许多对地图进行操作的函数。
Props
名称 | 说明 | 类型 |
---|---|---|
id | 组件 id | String |
amapkey | 高德地图的 key | String |
mapStyle | 地图的样式,可选 light/dark,默认为 light | String |
zoom | 地图的缩放等级,可选 3~18,默认为 13 | Number |
center | 地图的中心点,经纬度数组,如 [116.405467, 39.907761],默认为北京 | Array |
resizeEnable | 是否监控地图容器尺寸变化,并及时调整地图大小,默认为 true | Boolean |
zoomEnable | 地图是否可通过鼠标滚轮缩放,默认为 true | Boolean |
dragEnable | 地图是否可通过鼠标拖拽平移,默认为 true | Boolean |
scrollWheel | 地图是否允许通过鼠标滚轮缩放,默认为 true | Boolean |
keyboardEnable | 是否启用键盘操作地图,默认为 true | Boolean |
doubleClickZoom | 地图在双击时是否进行缩放,默认为 true | Boolean |
showIndoorMap | 是否显示室内地图,默认为 false | Boolean |
expandZoomRange | 是否支持地图缩放的扩展范围,默认为 false | Boolean |
Methods
名称 | 说明 | 参数 |
---|---|---|
getCenter | 获取地图的中心点 | 无 |
getZoom | 获取地图的缩放等级 | 无 |
setCenter | 设置地图的中心点 | center: Number[] |
setZoom | 设置地图的缩放等级 | zoom: Number |
setZoomAndCenter | 同时设置地图的缩放等级和中心点 | zoom: Number, center: Number[] |
getBounds | 获取当前视野的经纬度范围 | 无 |
setMapStyle | 设置地图的样式,可选 light/dark,默认为 light | mapStyle: String |
destroy | 销毁地图 | 无 |
事件
名称 | 说明 | 参数 |
---|---|---|
click | 鼠标左键单击事件 | e: MouseEvent |
dblclick | 鼠标左键双击事件 | e: MouseEvent |
rightclick | 鼠标右键单击事件 | e: MouseEvent |
movestart | 移动开始事件 | e: MouseEvent |
moving | 移动进行时事件 | e: MouseEvent |
moveend | 移动结束事件 | e: MouseEvent |
zoomchange | 缩放等级发生变化事件 | e: AMap.Map.ZoomEvent |
resize | 地图容器尺寸发生变化事件 | e: AMap.Map.SizeEvent |
Marker 组件
Marker 组件是用于在地图上添加点标记的组件,它可以添加文字标签和自定义图标。
Props
名称 | 说明 | 类型 |
---|---|---|
position | 点标记在地图上显示的位置,经纬度数组,如 [116.405467, 39.907761] | Array<Number> |
offset | 点标记显示位置偏移量,像素值为正,向下和向右偏移 | Array<Number> |
icon | 点标记图标的地址,可以是相对地址或者 URL | String |
label | 点标记文本标签的内容 | String |
labelOffset | 点标记文本标签偏移量 | Array<Number> |
extData | 用户自定义属性,支持 JavaScript 对象 | Any |
draggable | 是否可拖拽,支持 PC 端和移动端 | Boolean |
clickable | 是否可点击 | Boolean |
animation | 点标记的动画效果,如 drop/bounce 等 | String |
angle | 点标记的旋转角度,从正北开始,顺时针计算,单位度 | Number |
Methods
名称 | 说明 | 参数 |
---|---|---|
getPosition | 获取点标记的经纬度 | 无 |
setPosition | 设置点标记的经纬度 | position: Array<Number> |
setOffset | 设置点标记的偏移量 | offset: Array<Number> |
setIcon | 设置点标记的图标路径 | icon: String |
setLabel | 设置点标记的文本标签 | label: String |
setLabelOffset | 设置点标记的文本标签偏移量 | offset: Array<Number> |
setAngle | 设置点标记的旋转角度,从正北开始,顺时针计算,单位度 |
事件
名称 | 说明 | 参数 |
---|---|---|
click | 鼠标左键单击事件 | e: AMap.Marker.Event |
dblclick | 鼠标左键双击事件 | e: AMap.Marker.Event |
rightclick | 鼠标右键单击事件 | e: AMap.Marker.Event |
mouseover | 鼠标移到点标记上触发事件 | e: AMap.Marker.Event |
mouseout | 鼠标从点标记移开触发事件 | e: AMap.Marker.Event |
mousedown | 鼠标在点标记上按下触发事件 | e: AMap.Marker.Event |
mouseup | 鼠标在点标记上松开触发事件 | e: AMap.Marker.Event |
mousemove | 鼠标在点标记上移动触发事件 | e: AMap.Marker.Event |
dragstart | 开始拖拽点标记时触发事件 | e: AMap.Marker.Event |
dragging | 拖拽标记进行时触发事件 | e: AMap.Marker.Event |
dragend | 结束拖拽点标记时触发事件 | e: AMap.Marker.Event |
Polyline 组件
Polyline 组件是用于在地图上添加折线的组件,它可以添加自定义的样式。
Props
名称 | 说明 | 类型 |
---|---|---|
path | 折线的节点坐标信息,经纬度数组,如 [[116.405467,39.907761], [116.406467,39.907761]] | Array<Array<Number>> |
strokeColor | 折线颜色,可选 argb、rgb、rrggbb、#rrggbb,如 #FF0000 | String |
strokeOpacity | 折线透明度,范围为 0~1,0 表示完全透明,1 表示不透明 | Number |
strokeWeight | 折线宽度,单位:像素 | Number |
strokeStyle | 折线样式,可选实线(solid)或虚线(dashed) | String |
lineCap | 折线拐角处的绘制方式,可选 round/butt/square | String |
lineJoin | 折线两端点与相邻线段交汇处的绘制方式,可选 round/bevel/miter | String |
extData | 用户自定义属性,支持 JavaScript 对象 | Any |
draggable | 是否可拖拽,支持 PC 端和移动端 | Boolean |
clickable | 是否可点击 | Boolean |
showDir | 是否显示方向箭头,默认为 false | Boolean |
Methods
名称 | 说明 | 参数 |
---|---|---|
getPath | 获取折线的所有节点坐标 | 无 |
setPath | 设置折线的所有节点坐标 | path: Array<Array<Number>> |
setOptions | 设置折线的样式属性 | options: Object |
事件
名称 | 说明 | 参数 |
---|---|---|
click | 鼠标左键单击事件 | e: AMap.Polyline.Event |
dblclick | 鼠标左键双击事件 | e: AMap.Polyline.Event |
rightclick | 鼠标右键单击事件 | e: AMap.Polyline.Event |
mouseover | 鼠标移到折线上触发事件 | e: AMap.Polyline.Event |
mouseout | 鼠标从折线移开触发事件 | e: AMap.Polyline.Event |
mousedown | 鼠标在折线上按下触发事件 | e: AMap.Polyline.Event |
mouseup | 鼠标在折线上松开触发事件 | e: AMap.Polyline.Event |
mousemove | 鼠标在折线上移动触发事件 | e: AMap.Polyline.Event |
dragstart | 开始拖拽折线时触发事件 | e: AMap.Polyline.Event |
dragging | 拖拽折线进行时触发事件 | e: AMap.Polyline.Event |
dragend | 结束拖拽折线时触发事件 | e: AMap.Polyline.Event |
Circle 组件
Circle 组件是用于在地图上添加圆形的组件,它可以添加自定义的样式。
Props
名称 | 说明 | 类型 |
---|---|---|
center | 圆中心点经纬度,如 [116.405467,39.907761] | Array<Number> |
radius | 圆半径,单位:米 | Number |
strokeColor | 描边颜色,可选 argb、rgb、rrggbb、#rrggbb,如 #FF0000 | String |
fillColor | 填充颜色,可选 argb、rgb、rrggbb、#rrggbb,如 #FF0000 | String |
strokeOpacity | 线条透明度,范围为 0~1,0 表示完全透明,1 表示不透明 | Number |
strokeWeight | 线条宽度,单位:像素 | Number |
fillOpacity | 填充透明度,范围为 0~1,0 表示完全透明,1 表示不透明 | Number |
extData | 用户自定义属性,支持 JavaScript 对象 | Any |
draggable | 是否可拖拽,支持 PC 端和移动端 | Boolean |
clickable | 是否可点击 | Boolean |
Methods
名称 | 说明 | 参数 |
---|---|---|
getCenter | 获取圆心经纬度 | 无 |
setCenter | 设置圆心经纬度 | center: Array<Number> |
getRadius | 获取圆的半径 | 无 |
setRadius | 设置圆的半径 | radius: Number |
getBounds | 获取当前圆的最小外接矩形 | 无 |
setOptions | 设置圆的样式属性 | options: Object |
事件
名称 | 说明 | 参数 |
---|---|---|
click | 鼠标左键单击事件 | e: AMap.Circle.Event |
dblclick | 鼠标左键双击事件 | e: AMap.Circle.Event |
rightclick | 鼠标右键单击事件 | e: AMap.Circle.Event |
mouseover | 鼠标移到圆内触发事件 | e: AMap.Circle.Event |
mouseout | 鼠标从圆内移开触发事件 | e: AMap.Circle.Event |
mousedown | 鼠标在圆内按下触发事件 | e: AMap.Circle.Event |
mouseup | 鼠标在圆内松开触发事件 | e: AMap.Circle.Event |
mousemove | 鼠标在圆内移动触发事件 | e: AMap.Circle.Event |
dragstart | 开始拖拽圆形时触发事件 | e: AMap.Circle.Event |
dragging | 拖拽圆形进行时触发事件 | e: AMap.Circle.Event |
dragend | 结束拖拽圆形时触发事件 | e: AMap.Circle.Event |
BezierCurve 组件
BezierCurve 组件是用于在地图上添加贝塞尔曲线的组件,它可以自定义贝塞尔曲线的起点、终点和控制点,实现更为自由的曲线绘制。
Props
名称 | 说明 | 类型 |
---|---|---|
path | 贝塞尔曲线的节点坐标信息,三点曲线,经纬度数组,如 [[116.405467,39.907761], [116.406467,39.907761], [116.407467,39.909761]] | Array<Array<Number>> |
strokeColor | 曲线 |
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562e881e8991b448e0940