高德地图设置缩放级别和中心点无效

H5页面引用高德地图JS API,实现点标记且缩放自适应时,当添加了点标记到地图后,调用相关的API欲设置地图中心点和缩放,都会失效,大致代码如下:

var markers = [];

storeList.forEach(item=> {
    var marker = new AMap.Marker({
        position: item.lnglat,
        icon: '/images/icon_marker.svg',
        title: item.name
    });
 
    markers.push(marker);
});

map.add(markers);
map.setFitView();

if (markers.length === 1) {
    // 当长度为1时代码进到了这里,但是调用setZoomAndCenter设置无效
    map.setZoomAndCenter(16, markers[0].lnglat, true);
}

但是在地图第一次初始化的时候,显示的是想要的效果,点标记能自适应,如下:
image.png
然而在切换城市后(切换城市时我是将地图对象销毁然后重新初始化的),显示的效果就不符合预期了,如下:
image.png
比如当只有一个的时候,应该是要将点标记至于地图中心,且将缩放层级调高才对,但是就像上面代码所示,设置无效。

有没有做过类似需求的,这里想要的效果就是:
点标记能自适应全部显示在地图上,并且层级根据点的分布范围自适应

有没有大佬做过的,急急急,谢谢了~

阅读 9.7k
2 个回答

问题已解决:

  1. 点标记自适应显示在地图可视范围内,调用 map.add(markers) 后再调用
    map.setFitView() 后即可;
  2. 切换城市重新标记点标记时,需要先销毁当前地图对象再重新初始化地图对象,否则点标记不会即便调用了1中的方法点标记也无法自适应

点实例 markers[0].lnglat 是undefined.
可以用 marker.getPosition() 获取经纬度
也可以你的数据:storeList[0].lnglat

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题