vue-amap 如何实现切换多边形时,地图自动缩放到可视区域
·
看了更多文章,都说是用setFitView 但是都是原生高德写法,目前用vue-amap 找不到Amap对象(当然我是不会找,不知道如何使用),
后面就是这样的写法,我这边是没有执行,log都打印不出来,感觉没有,大家可以试试
<el-amap
:zoom="zoom"
:center="center"
:events="events"
ref="map">
</el-amap>
传个event参数,并在Data中定义方法complete
data() {
return {
zoom:13,
center: [117.178838, 39.108142],
events:{
complete:()=>{
let overlaysList = this.$refs.map.$$getInstance().getAllOverlays('marker')
this.$refs.map.$$getInstance().setFitView(overlaysList)
},
}
};
}
---------------------------------以上我是这边是没有用的---------------------------------------------
后面我找了vue-amap文档 地址:vue-amap文档

可以看到,complete是事件方法
因为,我改为如下
<el-amap ref="map" :center="center" :zoom="zoom" @complete="handleComplete">
methods: {
handleComplete() {
this.$nextTick(() => {
// 自动缩放 setFitView 包含就居中效果
let overlaysList = this.$refs.map.$$getInstance()?.getAllOverlays('polygon')
this.$refs.map.$$getInstance()?.setFitView(overlaysList)
})
},
}
-------------------------------------有效果-----------------------------------------
getAllOverlays() 里面的 参数,可以是polygon(多边形) 可以是market(点) 意思就是获取地图上的多边形点位或者点位数据,这个数据放在 setFitView里面,就可以自动缩放这些点位,使其可以完全展示在可视区域内
setFitView() 自动缩放后,就已经具备居中效果,无需在修改地图中心点
--------------切换多边形后,需要根据多边形大小,自动缩放
更改多边形后,在执行一下对应方法即可

觉得有帮助,点个赞吧!
更多推荐
所有评论(0)