vue-amap基于vue的高德地图使用
当时使用vue-amp做的一个地图展示大屏,直接上图:高德地图的官网API:https://lbs.amap.com/api/javascript-api/summary/vue-amap的中文文档:https://elemefe.github.io/vue-amap/#/zh-cn/introduction/install一、vue-amap准备工作1、安装vue-amapnpm方式,推荐使用n
当时使用vue-amp做的一个地图展示大屏
高德地图的官网API:https://lbs.amap.com/api/javascript-api/summary/
vue-amap的中文文档:https://elemefe.github.io/vue-amap/#/zh-cn/introduction/install
一、vue-amap准备工作
1、安装vue-amap
npm方式,推荐使用npm引入
npm install vue-amap --save
CDN方式
<script src="https://unpkg.com/vue-amap/dist/index.js"></script>
2、项目引入
在main.js中引入,对应的插件有注释说明
import VueAMap from 'vue-amap';
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
key: '自己的key',
plugin: [
"AMap.Autocomplete", // 输入提示插件
"AMap.PlaceSearch", // POI搜索插件
"AMap.Scale", // 右下角缩略图插件 比例尺
"AMap.OverView", // 地图鹰眼插件
"AMap.ToolBar", // 地图工具条
"AMap.MapType", // 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
"AMap.PolyEditor", // 编辑 折线多,边形
"AMap.CircleEditor", // 圆形编辑器插件
"AMap.Geolocation", // 定位控件,用来获取和展示用户主机所在的经纬度位置
"AMap.ControlBar" // 缩放、尺寸控制器
],
// 默认高德 sdk 版本为 1.4.4
v: '1.4.15',
});
二、创建地图容器
1、<el-amap></el-amap>来创建一个地图出来
<el-amap
ref="centerMap"
class="amap-box"
:vid="'amapVue'"
:zoom="mapConfig.zoom"
:zooms="mapConfig.zooms"
:center="mapConfig.center"
:amap-manager="amapManager"
:plugin="plugin"
:events="mapEvents"
>
</el-amap>
2、基础配置
mapConfig: {
zoom: 15, // 当前缩放层级
zooms: [14, 18], // 地图缩放层级范围
center: [115.779166, 33.824559], // 地图中心点
},
3、amapManager是地图的管理对象
官网上有明确说明,可以通过amapManager来获取一系列的地图对象实例(地图、点、线等)
4、plugin,地图插件
在这里我使用到了一个插件:图层控制,使用图层控制来显示卫星图,再使用css样式表来将右上角的图层控制器给隐藏,在我的另外一篇有说明https://blog.csdn.net/m0_37755267/article/details/119572237
plugin: [
{
pName: "MapType",
defaultType: 1, //0代表默认,1代表卫星
showTraffic: false, // 路网
showRoad: true, // 路况
}
]
5、events,事件集合对象
events我是叫它事件集合对象,因为所有的一些回调函数或事件方法都可以在这下面写,地图的events里有一些地图的渲染生命周期的回调,具体参考官网,主要用的两个init()和complete()
init()中有个参数,此参数就是地图的实例对象
complete()地图加载完成后触发,在这里我主要是将地图的所有覆盖物展示在可视区域内,使用
amapManager.getMap().setFitView();
mapEvents: {
init: (o) => {
// ... 初始地图的一些操作
},
complete: () => {
// ... 地图渲染完成后的一些操作
}
}
三、自定义图片图层
<el-amap-ground-image
:vid="'backImage'"
:url="groundimage.url"
:bounds="groundimage.bounds"
></el-amap-ground-image>
bounds是图片左上角、右上角的坐标(我觉得这里有点坑,应该设4个点,2个点很不好对应)
groundimage: {
url: "自定义的图片地址",
bounds: [
[115.751557, 33.837427],
[115.799549, 33.837356],
]
}
四、创建点marker
<el-amap-marker
v-for="(item, index) in poiLists"
:vid="'amap-marker-one' + index"
:position="item.position"
:icon="item.icon"
:clickable="true"
:events="item.events"
:animation="item.animation"
:label="poiTemplate(ele, item)"
:extData="item"
></el-amap-marker>
1、position:为marker点的坐标(经纬度),接收数组
2、icon:自定义图标
3、clickable:true允许用户可点击marker点(默认也是true)
4、events:事件集合对象,click、dblclick、rightclick、mouseover、mouseout等
events: {
click: (e) => {
// ...点击操作
},
dblclick: (e) => {
// ...双击操作
},
...
}
5、animation:marker点的动画效果
marker点弹跳效果:设置值为 AMAP_ANIMATION_BOUNCE
6、label:点显示的简略信息
content可以是文字字符串也可以是html
offset是label的偏移量,[x, y]
{
content: "<div class='poi-content'>${item.eventName}</div>",
offset: [40, 7],
}
6、marker点的方法,可以通过refs、vid来获取对应的点实例
方法 | 返回值 | 说明 |
---|---|---|
getOffset( ) | Pixel | 获取Marker偏移量(自v1.3 新增) |
setOffset(offset:Pixel) | 设置Marker偏移量(自v1.3 新增) | |
setAnimation(animate:String ) | 设置点标记的动画效果 | |
getAnimation( ) | String | 获取点标记的动画效果类型 |
setClickable(clickable:Boolean ) | 设置点标记是支持鼠标单击事件 | |
getClickable( ) | Boolean | 获取点标记是否支持鼠标单击事件 |
getPosition( ) | LngLat | 获取点标记的位置 |
setPosition(lnglat:LngLat) | 设置点标记位置 | |
setAngle(angle:Number) | 设置点标记的旋转角度 | |
getAngle() | Number | 获取点标记的旋转角度 |
setzIndex(index:Number) | 设置点标记的叠加顺序,默认最先添加的点标记在最底层 | |
setIcon(content:String/Icon) | 设置点标记的显示图标 | |
getIcon( ) | String /Icon | 当点标记未自定义图标时,获取Icon内容 |
setDraggable(draggable:Boolean) | 设置点标记对象是否可拖拽移动 | |
getDraggable( ) | Boolean | 获取点标记对象是否可拖拽移动 |
hide( ) | 点标记隐藏 | |
show( ) | 点标记显示 | |
setCursor(Cursor) | String | 设置鼠标悬停时的光标。 参数cur可为CSS标注中的光标样式 |
setContent(html:String|htmlDOM) | 设置点标记显示内容,可以是HTML要素字符串或者HTML DOM对象 | |
getContent( ) | String | 获取点标记内容 |
moveAlong(lnglatlist,speed,f,circlable) | 以指定的速度,点标记沿指定的路径移动。参数lnglats为路径坐标串;speed为指定速度,单位:千米/小时;回调函数f中可添加自定义功能;参数loop表明是否循环执行动画,默认为false | |
moveTo(lnglat,speed,Function) | 以给定速度移动点标记到指定位置。参数lnglat为指定位置,必设;speed为指定速度,单位:千米/小时;回调函数f中添加自定义功能 | |
stopMove( ) | 点标记停止动画 | |
setMap(map:Map) | 为Marker指定目标显示地图。当参数值取null时,地图上移除当前Marker:setMap(null) | |
getMap() | Map | 获取Marker所在地图对象 |
setTitle(title:String) | 鼠标滑过点标时的文字提示 | |
getTitle( ) | String | 获取点标记的文字提示 |
setTop(isTop:Boolean) | 地图上有多个marker时,当isTop为true时,marker将显示在最前面;当为false时,marker取消置顶 | |
getTop( ) | Boolean | |
setShadow(icon:Icon) | 为marker设置阴影效果 | |
getShadow( ) | Icon | 获取marker的阴影图标 |
setShape(shape:MarkerShape) | 设置marker的可点击区域 | |
getShape( ) | MarkerShape | 获取marker的可点击区域 |
setExtData(ext:Any) | 设置用户自定义属性,支持JavaScript API任意数据类型,如Marker的id等 | |
getExtData( ) | Any | 获取用户自定义属性 |
五、绘制多边形
这个多边形好像没什么说的,path接收一个二维数组,里面是经纬度集合
<el-amap-polygon
:vid="'amap-polygon-one'"
:path="areaPointerList"
editable="true"
strokeStyle="dashed" // 边线是实线还是虚线,dashed、solid
strokeColor="#FF0000" // 边线颜色值
strokeWeight="2" // 边线宽度
strokeOpacity="0.8" //边线透明度
fillColor="#1791fc" // 封闭区域内的填充色
fillOpacity="0.3" // 封闭区域内的透明度
></el-amap-polygon>
更多推荐
所有评论(0)