1. 程式人生 > >百度地圖中心偏移到左上角,地圖有時能加載出來有時載入不出來

百度地圖中心偏移到左上角,地圖有時能加載出來有時載入不出來

在現在專案中使用到了百度地圖:

1.訂單起點設定為中心點

2.顯示周圍司機

在這個過程中遇到兩個問題:

1、訂單中心點左上角位置,網上查了很多資料,說是在div在隱藏的狀態下建立BMap會出現這種情況,此時,預設為寬度和高度都為0,中心點自然就跑到左上角去了,網上

很多說了很多解決方案,map.centerAndZoom(point,15);            map.setCenter(point);                 檢視百度API還有panTo();等等一些方法,還是沒有解決問題,最終在API裡面事件裡找到了:地圖載入完畢的事件,等地圖載入完畢,在這個事件裡在將地圖的中心點設定成自己想要的點,這樣會存在一個問題,就是如果設定的中心點是固定的點,那麼每次拖動地圖的時候最後的中心點都會在設定的固定點上,也就是會出現拖拽後又返回的的情況,像是有彈力般的感覺,這是就需要在js裡定義一個變數,只讓這個事件作用一次,就是指在第一次載入該地圖頁面的時候用該事件設定一次中心點,這樣就完美解決該問題:

var loadCount = 1;
    map.addEventListener("tilesloaded",function(){
        if(loadCount == 1){
            map.setCenter(point);
        }       
            loadCount = loadCount + 1;
     });
     
2、地圖有時顯示的出來,有時載入不出來,開始以為是網速問題,後來覺得不是網速問題,是每次點選都加在百度地圖,載入次數過多導致,解決方法就是指在載入js的時候載入一次百度地圖就解決問題了,方法如下:
<script type="text/javascript"
	src="http://api.map.baidu.com/api?v=2.0&ak=百度祕鑰&callback=initMap"></script>
然後在你的js裡面定義initMap方法:
<pre name="code" class="javascript">var map;
function initMap() {
	// 新增百度地圖
	map = new BMap.Map("allmap");
}
然後就解決問題了。