百度離線地圖


      最近由於項目需要,需要在網頁上構建地圖應用,想到了百度地圖API。但由於百度地圖官方不支持JS離線地圖,只有通過此辦法實現,在此記錄下來,希望能幫上需要的朋友。

本教程是在一位仁兄的基礎之上做的拓展,可以先參看一下——使用百度地圖離線JavaScript API加載本地瓦片地圖

此教程完整的Demo,在這里下載——百度離線地圖Demo-v1.3.zip

效果圖如下(由於效果圖中的瓦片地圖文件過大,因此Demo中是很簡陋的瓦片地圖,可以根據自己需要下載替換)


具體實現步驟如下:

    1.構建在線的地圖應用。(版本是JavaScript API v1.3,其他版本尚未測試,如有需要可以自行研究

基礎API下載地址:apiv1.3.min.js 

css文件下載地址:bmap.css 

API文檔下載地址:jsapi1-3.zip

這里先建立一個簡單的在線地圖應用,頁面如下:

  1.  
    <!DOCTYPE html>
  2.  
    <html>
  3.  
    <head>
  4.  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
    <title>DEMO </title>
  6.  
    <script type="text/javascript" src="js/apiv1.3.min.js"> </script>
  7.  
    <!--script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script-->
  8.  
    <link rel="stylesheet" type="text/css" href="bmap.css"/>
  9.  
    </head>
  10.  
    <body>
  11.  
    <div style="width:520px;height:340px;border:1px solid gray" id="container"> </div>
  12.  
    </body>
  13.  
    </html>
  14.  
    <script type="text/javascript">
  15.  
    var map = new BMap. Map( "container",{ mapType: BMAP_NORMAL_MAP});
  16.  
    var point = new BMap. Point( 116.404, 39.915); // 創建點坐標
  17.  
    map. centerAndZoom(point, 5); // 初始化地圖,設置中心點坐標和地圖級別。
  18.  
     
  19.  
    //map.addControl(new BMap.MapTypeControl());
  20.  
    map. addControl( new BMap. NavigationControl());
  21.  
    map. enableScrollWheelZoom(); // 啟用滾輪放大縮小。
  22.  
    map. enableKeyboard(); // 啟用鍵盤操作。
  23.  
    </script>
效果圖:

 


觀察向網絡請求的文件


這些需要離線的資源文件主要有三類:圖標素材、依賴模塊API文件、瓦片地圖文件。下面就從這些下手。

    2.下載圖標素材

 

可以通過上圖的方式獲取素材的下載地址,也可直接從Demo文件/images路徑下獲取


得到基本的圖標素材后,將之前所下載的bmap.css文件里面圖片的url修改為本地路徑即可。

 

    3.下載依賴模塊API文件(非常關鍵)

此文件必不可少,如果缺少某個依賴模塊,則無法使用相應的API。這個請求文件的原理是根據你在自己頁面中使用的API來向官網請求相應的依賴模塊API,參數的字符串格式是根據所使用依賴模塊的順序生成“模塊名”以“,”分隔。

例如:

 

  1.  
    <script type="text/javascript">
  2.  
    var map = new BMap. Map( "container",{ mapType: BMAP_NORMAL_MAP});
  3.  
    var point = new BMap. Point( 116.404, 39.915); // 創建點坐標
  4.  
    map. centerAndZoom(point, 5); // 初始化地圖,設置中心點坐標和地圖級別。
  5.  
     
  6.  
    //map.addControl(new BMap.MapTypeControl());
  7.  
    map. addControl( new BMap. NavigationControl());
  8.  
    map. enableScrollWheelZoom(); // 啟用滾輪放大縮小。
  9.  
    map. enableKeyboard(); // 啟用鍵盤操作。
  10.  
    //map.setCurrentCity("北京"); // 設置地圖顯示的城市 此項是必須設置的
  11.  
    </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文件中。

所有依賴模塊名稱如下:


也可以全部下載下來放入modules文件中。

Demo文件中的modules文件中在map模塊部分已經去掉了百度版權信息


如有需要,可以直接使用此文件的map部分去除百度版權。

然后將此資源文件的請求路徑改為本地,需要在之前下載的apiv1.3.min.js中修改,由於細節較多這里就不詳細描述了,建議直接使用Demo文件中已修改好的apiv1.3.min.js文件。如有興趣的話可以通過“代碼比較軟件”與之前下載apiv1.3.min.js進行比較找到修改之處

    4.下載瓦片地圖文件(tile)

這里提供一個下載瓦片地圖的軟件——全能電子地圖下載器1.9.5.zip ,里面包含有注冊機,安裝過程就不描述了。

這里是使用說明——使用說明(雖然軟件聲明能下載的地圖類型比較多,但好像只有百度地圖能正常使用)

根據自己需要下載瓦片地圖后直接拷貝到Demo文件/maptile路徑下(將原有的文件刪除)

在這里教程完畢。


最后:

雖然還有不完善的地方,但完成前面的幾步應該就可以根據API文檔開發出自己的地圖應用了。如果大家還有疑問或者建議,可以留言或者站內信。

 

轉載自:https://blog.csdn.net/geekxm/article/details/14227139

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM