在高德地图APP首页虽然增加了上下滑动的效果,但是,搜索框在上下移动时地图的高度变化了,而地图的内容没有跟随高度的变化而自适应居中显示,特别是当地图上查看某一个点线面位置信息,如marker的时候。显示效果如下:

初始页面:
​​​​leaflet实现高德地图首页地图自适应显示

下滑后,定位点 marker 并没有根据地图容器的高度自适应显示居中:

leaflet实现高德地图首页地图自适应显示

为此,我用的leaflet来加载地图,在地图高度变化时,地图上的marker也会随着地图高度而自适应居中显示,调用的函数为:map.invalidateSize(true);

但是,这个函数在给地图容器 div 的高度做过渡效果时,如设置上下滑动时地图容器div高度过渡为div.style.transition="height 0.4s";
这个过渡时间会跟上面的自适应函数有冲突,取消过渡效果又会影响视觉效果,为了保持原有的过渡效果并让地图容器自适应显示居中,需要给自适应函数map.invalidateSize(true)设置一个定时器方法:setTimeout(function(){ map.invalidateSize(true); }, 400);
即在过渡效果结束后,再调用自适应函数。显示效果如下:

初始页面:

leaflet实现高德地图首页地图自适应显示

下滑后,地图点位 marker 与底图、范围圆圈根据地图容器的高度自适应显示居中:

leaflet实现高德地图首页地图自适应显示

相关文章: