百度地图API有个BUG,就是如果页面滚动后,那么鼠标滚轮缩放会显示不正确,有偏移。
原因是百度地图的缩放是基于body层的,如果body层有滚动条,并且不在最顶端,在当前位置插入了百度地图,也就是出现该问题时的状态,这个时候滚轮缩放就会产生偏移。
网上有人用缩放的时候页面自动滚动到开始,然后结束缩放时重新滚动到老位置的方法,可以解决,但是比较恶心。
下面的代码,可以完美解决问题且100%不会偏移,正确无误差纠正偏移:
if ($(document).scrollTop() > 0) {
var p;
var sp;
map.addEventListener("mousemove",function(e){
p = e.point;
sp = map.pointToPixel(p);
});
map.addEventListener("zoomend",function(e){
var new_sp = map.pointToPixel(p);
var dx = new_sp.x - sp.x;
var dy = new_sp.y - sp.y;
map.panBy(-dx, -dy);
});
}