【高德JS API】记录一下API不同版本导致setFitView()渲染效果不同的情况

问题的产生

最近在用VUE做前端项目重构时遇到了地图相关需求,于是和原先项目一样接入了高德JS API~

需求的具体表现是这样的:

原本地图中有一个marker和以marker为圆心的circle:

当用户点击地图上的某个位置,需要让marker和circle移动过去,并且地图也要自适应地将其重新显示在中央。所谓自适应,就是你能看到地图的视野跟随新点做出了移动调整

如上图,marker地点更新后,地图会向左上方移动视野!

然后我参考同事的代码,为amap对象添加了有关事件:


          this.map.on('click', (ev) => {
            console.log(ev)
            //重新设置marker和circle,把位置切换过去
            marker.setPosition(ev.lnglat)
            this.fenceCircle.setCenter(ev.lnglat)
            this.map.setFitView()
          })

看起来没有什么问题,也符合前同事的代码思路,可是调试后发现渲染效果出了问题。。。

虽然地点也更新了,地图也确实把它展示在中央了,但是,这是在一瞬间完成的。。。。然后你就会感觉,嘿?点击后怎么marker和circle没动?固定在中央了??就背后的地图在动??

原因探索

经过我的苦苦搜寻,最后终于确定了问题出在一个最不起眼的地方,原先代码使用的高德版本是1.3: 

<script type="text/javascript"
        src="http://webapi.amap.com/maps?v=1.3&key=**************************&plugin=AMap.DistrictSearch"></script>

当我把它改成1.4.15后,运行旧代码……同样的问题出现了!!

问题解决

找到了bug的原因后解决bug就简单的多了,除了更改版本以外,还有一种解决方法是使用 map.setCenter()方法,设置地图中心点,就能实现地图的丝滑移动了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值