1. 程式人生 > >百度地圖離線API開發(純粹的離線) GT小俠

百度地圖離線API開發(純粹的離線) GT小俠

         公司現在做的一個專案本來用的是google離線地圖,但是發現谷歌的地圖資料很久沒更新資料了,中國的城市發展這麼快,好多地方地圖和現實都對不上了。發現百度地圖資料更新挺快的(呵呵,畢竟是國產的嗎),最後公司決定要把google地圖換成百度地圖。就把此重任交個了本小俠,我上網一查,百度地圖根本就不提供離線地圖包。小俠我頓時覺得掉進坑裡了。哎,誰讓本小俠是打工的呢,命苦啊。只能頂頭硬上了。

         於是,本小俠就拼命的百度啊,翻牆google“百度地圖離線包”,搜了一個星期終於有點眉目了。但是發現網上的百度離線地圖有兩個致命缺陷:

         1,不支援IE;

         2,地圖的功能很少,不支援聚合,不支援畫多邊形等等。

這顯然不符合公司的要求,於是本小俠決定經知己研究一個全新的,經過我三個月的研究,終於搞定了百度離線地圖。啥都不說,先看看本小俠的戰果吧: 

地圖純離線:

 


支援IE7,8,9,10,11(已測),更高版本還沒測試;fireFix和chrome等主流瀏覽器。


支援畫圓,畫多邊形等:

支援多點聚合:

呵呵,效果還不錯吧!

下面說下本小俠的開發思路:

         既然百度提供線上的地圖,我們想要的是線上的,那麼我們就要想辦法把線上的程式碼改成離線的程式碼。就這麼簡單!

1.首先獲取百度 JavaScript API:

  首先用瀏覽器開啟http://api.map.baidu.com/api?v=1.3 如下圖所示:


其中http://api.map.baidu.com/getscript?v=1.3&ak=&services=&t=20150527115231個連結就是我們要找的API檔案,

同樣在瀏覽器中開啟它,並另存為諸如“apiv1.3.min.js”

還有百度地圖必須的一些控制元件,游標,logo之類的圖片也下載下來

2.修改“apiv1.3.min.js”把裡面的地圖控制元件的圖片,游標,logo等連結替換成本地的。

3.下載依賴模組API檔案(非常關鍵)

此檔案必不可少,如果缺少某個依賴模組,則無法使用相應的API。這個請求檔案的原理是根據你在自己頁面中使用的API來向官網請求相應的依賴模組

API,引數的字串格式是根據所使用依賴模組的順序生成“模組名”以“,”分隔。

<script type="text/javascript">
var map = new BMap.Map("container",{mapType: BMAP_NORMAL_MAP});
var point = new BMap.Point(116.404, 39.915);    // 建立點座標
map.centerAndZoom(point,5);                     // 初始化地圖,設定中心點座標和地圖級別。
//map.addControl(new BMap.MapTypeControl());
map.addControl(new BMap.NavigationControl());
map.enableScrollWheelZoom();                  // 啟用滾輪放大縮小。
map.enableKeyboard();                         // 啟用鍵盤操作。  
//map.setCurrentCity("北京");          // 設定地圖顯示的城市 此項是必須設定的
</script>

所請求的依賴庫引數是http://api.map.baidu.com/getmodules?v=1.3&mod=map,oppc,tile,control

為了省去麻煩,Demo中的依賴庫命名為modules(可以根據自己需要修改),在Demo檔案/js路徑下,裡面已有map,oppc,tile,control,menu,marker,infowindow這幾個模組

 

可以根據自己的需要從這個地址得到:http://api.map.baidu.com/getmodules?v=1.3&mod=模組名,然後將內容新增到modules檔案中。

 

4,Demo檔案中的modules檔案中在map模組部分已經去掉了百度版權資訊,

由於本人時間有限,程式碼資源包和更詳盡的資訊請訪問QQ空間: 2926963574檢視。