看了更多文章,都说是用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()  自动缩放后,就已经具备居中效果,无需在修改地图中心点

--------------切换多边形后,需要根据多边形大小,自动缩放

更改多边形后,在执行一下对应方法即可

觉得有帮助,点个赞吧!

更多推荐