js百度地圖鼠標滾輪縮放導致地圖中心點偏移問題
一、問題
帶滾動條的彈窗中的地圖正常顯示,滾輪縮放位置發(fā)生偏移,放大時位置是靠上偏移的,縮小時位置是靠下偏移的, 高德地圖、騰訊地圖不存在此問題,百度地圖存在
二、問題分析
是由于百度地圖默認定位是取瀏覽器文檔對象的scrollTop=0的位置, 是由body中心為中心點的, 如果html頁面(或者是彈窗)出現(xiàn)滾動條,那么地圖的中心位置其實是有偏移的,偏移的距離就是滾動條滾動的距離。這個時候縮放就會出現(xiàn)上述偏移的情況。
三、解決方法
1.禁止?jié)L輪縮放, 添加縮放控件
禁止?jié)L輪縮放, 添加百度地圖縮放控件
mapCanvas = new BMap.Map("mapBox", { enableMapClick: false });
var point = new BMap.Point(116.379341, 39.938776);
mapCanvas.centerAndZoom(point, 15);
//彈窗中帶有滾動條 縮放會存在中心點偏移問題
mapCanvas.disableScrollWheelZoom(); //禁止鼠標滾輪縮放
mapCanvas.addControl(scaleCtrl);
//平移縮放控件
mapCanvas.addControl(new BMap.NavigationControl());
var scaleCtrl = new BMap.ScaleControl(); // 添加比例尺控件
效果:

添加縮放效果
2.調(diào)節(jié)滾動條
在彈窗打開的時候,檢查滾輪位置是否在最頂部,如果不在的話,調(diào)整到最頂部,然后在彈窗關(guān)閉的時候,恢復到最初的位置即可。
解決方法可參考:
調(diào)節(jié)滾動條位置-解決方案
總結(jié)
到此這篇關(guān)于js百度地圖鼠標滾輪縮放導致地圖中心點偏移問題的文章就介紹到這了,更多相關(guān)js百度地圖縮放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中Array數(shù)組常用方法(附上相應的用法及示例)
這篇文章主要給大家介紹了關(guān)于JavaScript中Array數(shù)組常用方法,文中附上相應的用法及示例,需要的朋友可以參考下2024-01-01

