在使用百度地图api js开发的过程中遇见这样一个问题:

使用map.centerAndZoom(point,14)函数时会发现地图显示的中心点位置与坐标不同,如果下面同样设置了new BMap.Marker(point);的话会发现marker的位置与坐标位置不一致。仔细观察会发现point的真实位置应该是在地图的左上角。如下图所示:

实际上造成这种问题的原因在与放置地图的容器设置了display:none;属性,这样会导致地图容器宽高为0,在宽高为0的容器上,中心点自然也是0了,即容器的左上角。

因此只能在可视的情况下创建地图。

解决办法:

一:设置定时器

setTimeout(function(){
    map.setCenter(point);
}, 200);

个人觉得这种办法有些笨,有些土,可能是作者君的强迫症在作怪。

二:不使用display,或者display后再创建地图:

$("div")show(function(){
    map.setCenter(point);
});

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐