高德地图AMap --- infoWindow 与 setCenter 冲突问题

背景: 在高德地图上渲染了很多marker, 点击marker后加载infoWindow并对地图amap进行setZoom和setCenter将marker缩放至视图中心

出现问题: 当要点击marker不在视图中心时,点击marker后加载了infoWindow,但是此时setCenter却不能够正确的设置中心点,会出现偏移

复现步骤
1.地图渲染marker

image.png

2.点击右上角边缘marker(此时获取了marker的position,并用此position进行setCenter,setZoom,预期应该将infoWindow打开,并且地图比例尺放大并将marker显示在中心位置)

image.png
3.实际效果出现偏差

image.png

问题分析:在出现问题之后一直很疑惑,为什么setCenter是正确的中心店的position,但是实际效果却并不一样,当我们不加载infoWindow时,就不会出现这个问题,那么一定是infoWindow出现了冲突,但是如果infoWindow出现的位置都在视图范围之内,又能够如预期效果一样定位到中心

结论: 最后在各种查阅,调试之后,发现了问题的所在处, infoWindow有个属性叫autoMove,此属性若为true,当我们的infoWindow在打开的时候,如果infoWindow的内容不在视图范围之内,会自动调整地图视图将infoWindow所有内容区域显示到范围内,所以我们如果marker在边缘,点击marker时,加载infoWindow,此时infoWindow的内容区域并不在地图视图范围之内,所以进行了autoMove调整视口,而这一操作恰好与我们的setCenter产生了冲突,导致最后的实际效果总是和预期有偏差,而infoWindow的autoMove属性默认值是true(在文档里并没有提到有默认true)

解决方案: 如果我们需要动态设置视图center,且会伴随infoWindow的开启和关闭,就将其autoMove属性配置为false,即可解决上述问题

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值