上一篇我們根據研究學習,實作了實時定位顯示功能,可以在地圖上顯示出自己所處的位置,并實時進行自動更新,那么接下來就讓我們實作離線地圖功能,
在日常的業務開發程序中,很多時候都會使用離線地圖,那么我們需要在有網的時候加載并下載所處地區的地圖,當沒有運營商網路或WIFI的時候,就可以無感切換到離線地圖,不會過大影響用戶的使用,
實作離線地圖功能
關于離線地圖,這塊的內容百度教程說明的不是很詳細,具體的還是需要你下載他們提供的demo,自己去研究,否則很難實作離線地圖的功能,
離線地圖的實作主要有兩種方式:
一、將自己提前下載好的離線地圖檔案存放到app軟體的特定位置處,
這個方法目前官方是沒有說明的,根據網上說法是之前版本有特殊說明,可以匯入離線地圖,最新版已經將此介面棄用掉了,但是經過我的研究發現,其實還是可以巧用的,
百度地圖的下載檔案是以.dat格式結尾的,根據對百度地圖官方APP的研究,發現它會將下載的離線地圖快取到 Android/data/app包名/files/vmp 中,大家可以看下自己android手機快取的百度地圖離線地圖地址,
其實我當時也在猜想,既然它官方快取的地址是這里,那是不是就證明它在SDK中,是優先從這個地址中檢索離線地圖進行展示的,如果是這樣子的話,是不是就可以把我提前下載好的地圖檔案放在這里,
事實證明確實是這樣子的,將需要快取目的地的離線地圖放到這個目錄下,在手機沒有網路的情況下,可以加載顯示出地圖,
如果你的業務需求主動下載很困難的話,可以使用這種方式,遠程給客戶更新離線地圖,方便其在現場使用,
具體地址見下圖:頂部紅框部分是地址,下部紅圈部分是下載的天津市離線地圖,在沒有網路的情況下,SDK會默認加載離線地圖進行顯示,

二、通過MKofflineMap來主動下載地圖,
咱們先按照官網給的教程走一篇,看到底會不會遇到難題,
如果是新手看離線地圖這塊的教程,會滿臉懵逼的,官方只是給你羅列出幾個具體的關鍵點,一些細節性的操作沒有說明,
- 初始化離線地圖
MKOfflineMap mOffline = new MKOfflineMap();
// 傳入MKOfflineMapListener,離線地圖狀態發生改變時會觸發該回呼
mOffline.init(listener);
- 開始下載
//獲取城市ID
ArrayList<MKOLSearchRecord> records = mOffline.searchCity(cityName);
if (records != null && records.size() == 1) {
cityId = records.get(0).cityID;
}
// 開始下載離線地圖
// cityID 城市的數字標識
mOffline.start(cityid);
- 暫停下載
//暫停下載
mOffline.pause(cityid);
- 停止下載
//停止下載
mOffline.pause(cityid);
- 洗掉下載
//洗掉下載
mOffline.remove(cityid);
- 更新下載
//更新下載
mOffline.update(cityid);
關于更新下載,在更新程序中會通過onGetOfflineMapState來回呼資訊,可查看更新進度、新離線地圖安裝、版本更新提示等功能,
上面的內容是官方給的教程,按照它進行操作確實可以下載到地圖,但是沒有提示,不友好,而且開發者根本不知道地圖下載到哪里去了,需要自己去根據給的DEMO,再去研究才可以,
下面是結合官方教程和官方API,DEMO等,摸索出來的,目前只是簡單實作地圖的下載,下載進度值的顯示,后面你可以根據自己的業務需求來進行定制操作,
1、初始化離線地圖
2、通過城市ID下載對應地圖
3、在回呼函式中顯示地圖下載進度(0-100)
下來就讓我們實際操作一遍

點擊事件進行地圖的下載和暫停

在監聽事件mKOfflineMapListener中,利用回呼函式來實時獲取下載地圖的進度,

運行后,點擊開始下載,就可以實作天津市地圖的離線操作,會在回呼函式中獲取到下載進度,實時列印顯示在軟體界面上,


當進度走完,你就會在紅框地址的檔案夾下面看到已經下載的天津的離線地圖檔案,
哈哈哈,是不是感覺很nice,
上面我只是簡單的介紹下載離線地圖,這里面關于圍繞離線地圖有很多玩法,具體根據自己的業務進行結合,可以實作,
好了今天的分享就在這里,感謝你的閱讀,
對了提醒大家一句,多看DEMO,它比官方檔案教程強太多了,
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的,
原創不易,給個關注,
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝,
作者:阿輝 關注我:微信掃描下面二維碼,6T編程資料免費送, 微信公眾號:Andy阿輝
寫一些程式員的所思所想,希望對你有幫助,
出處:http://www.cnblogs.com/netxiaoahui/ 著作權宣告:本文著作權歸作者和博客園共有,歡迎轉載,
但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/296456.html
標籤:其他
上一篇:iOS-WKWebView 加載HTML字符自適應文字和圖片
下一篇:[Kotlin Tutorials 19] Kotlin Flows, SharedFlow and StateFlow in Android
