1.離線地圖簡介
百度地圖SDK自2.0.0版本起,採用的是向量版離線地圖,請開發人員在下載時注意選擇。 使用離線地圖,請下載。
2.初始化
在使用offline map之前需先建立MapView。MapView的建立詳見Hello World部分的相關介紹。
初始化離線地圖的核心代碼如下:
源碼複製列印關於
- MKOfflineMap mOffline = null; //申明變數
- MapController mMapController = mMapView.getController();
-
-
- //寫在onCreate函數裡
- mOffline = new MKOfflineMap();
- //offline 實始化方法用更改。
- mOffline.init(mMapController, new MKOfflineMapListener() {
- @Override
- public void onGetOfflineMapState(int type, int state) {
- switch (type) {
- case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:
- {
- MKOLUpdateElement update = mOffline.getUpdateInfo(state);
- //mText.setText(String.format(%s : %d%%, update.cityName, update.ratio));
- }
- break;
- case MKOfflineMap.TYPE_NEW_OFFLINE:
- Log.d(OfflineDemo, String.format(add offlinemap num:%d, state));
- break;
- case MKOfflineMap.TYPE_VER_UPDATE:
- Log.d(OfflineDemo, String.format(new offlinemap ver));
- break;
- }
- }
- }
- );3.匯入離線包
SDK支援匯入離線包,將從官方渠道下載的離線包解壓後,把其中的vmp檔案夾拷入SD卡根目錄下的BaiduMapSdk檔案夾內。 使用離線地圖,請下載。
源碼複製列印關於
- int num = mOffline.scan();
- //if (num != 0)
- //mText.setText(String.format(已安裝%d個離線包, num));
如果你按照上述方法匯入成功了,那麼恭喜你,你不用再往下看了。否則請繼續往下看,
如果你的Android手機有內建儲存又有掛載的SD卡,那麼很可能你遇到了和我一樣的問題。之前我把下載下來的離線地圖包放置在手機的SD卡上,目錄結構為:/mnt/sdcard/BaiduMapSdk/vmp/,此時根本無法匯入,因為百度地圖SDK根本無法尋找到。後來我把BaiduMapSdk這個檔案夾複製到手機的內建儲存的根目錄下,再重新執行立馬成功了。
後來我又下載了百度地圖Android版手機應用(apk版),發現該應用的離線地圖包目錄是BaiduMap(不知道為什麼在使用SDK時離線地圖的緩衝目錄是BaiduMapSdk而此處是BaiduMap,如果搞統一是不是會更方便呢?),而且在匯入離線地圖包時可以選擇儲存位置(是手機內建儲存還是SD卡),而在使用百度地圖sdk時並沒有指定離線地圖包位置的相應介面,所以就導致了使用離線地圖包時的上述問題。