在js引入百度地圖時碰到了問題,就是坐標點和位置標注不在一個位置發生偏移。位置標注在地圖中心,但是用經緯度定位的坐標點卻跑到了地圖上方
js代碼如下:
// 創建地圖實例 var map = new BMap.Map("allmap"); map.enableScrollWheelZoom(true); //開啟鼠標滾輪縮放 // 創建點坐標 var point = new BMap.Point(121.529376,31.213313); // 初始化地圖,設置中心點坐標和地圖級別 map.centerAndZoom(point, 16); var opts = { type: BMAP_NAVIGATION_CONTROL_LARGE } map.addControl(new BMap.NavigationControl(opts)); var marker = new BMap.Marker(point); // 創建標注 map.addOverlay(marker); // 將標注添加到地圖中
問題界面如下:此時坐標點和標注不是重疊的。
此時只有當我拖拽或縮放地圖,才能夠讓地圖重新定位准確,讓坐標和標注點都在中心位置,后來百度了很多方法,添加以下代碼能夠解決問題
var loadCount = 1; map.addEventListener("tilesloaded",function(){ if(loadCount == 1){ map.setCenter(point); } loadCount = loadCount + 1; });
問題解決后界面如下:
tilesloaded是檢測地圖塊是否加載完成,當地圖所有圖塊完成加載時觸發此事件,每次拖動地圖也會觸發tilesloaded事件。
暫時不知道原因 是什么,先做個記錄
參考鏈接:https://blog.csdn.net/eliane_/article/details/80311512#commentBox