var map1 = new BMap.Map("allmap");
            map1.centerAndZoom(new BMap.Point(116.404, 39.915), 9);
            var point1 = new BMap.Point(116.404, 39.915);
            map1.enableScrollWheelZoom();
            map1.enableInertialDragging();
            map1.enableContinuousZoom();
            map1.addControl(new BMap.OverviewMapControl());
            map1.addControl(new BMap.NavigationControl());
            map1.addControl(new BMap.ScaleControl());      // 添加比例尺控件
            map1.enableScrollWheelZoom();                  //启用滚轮放大缩小
            var cp;
            map1.addEventListener("mousemove",function(){//加载完成时,触发
                cp = map1.getCenter();
            });
            map1.addEventListener("mouseend",function(){//加载完成时,触发
                cp = map1.getCenter();
            });
            map1.addEventListener("tilesloaded",function(){//加载完成时,触发
                map1.setCenter(cp);
            });

原因预测:根据使用经验来看,百度地图处理缩放是并不是以当前容器来计算中心点的,所以在缩放的时候才会出现中心点偏移的情况,当容器设置偏移量越多缩放的时候地图中心点偏移就越大
处理思路:在在平移之前获取地图的中心点,地图加载完成之后设置前面获取的中心点为当前的中心点,但是仍然存在一个问题,如果只平移的话 就会存在强制设置中心点而使平移失效,所以在平移之后事件中重新获取了一次中心点来解决平移事件的问题

Logo

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

更多推荐