本节整理百度离线地图下载,暂停,更新。删除等知识
初始化离线地图
mOffline = new MKOfflineMap();
mOffline.init(this);
获取热门城市列表
ArrayList<MKOLSearchRecord> records1 = mOffline.getHotCityList();
通过list列表的cityName即可获取城市名,cityID即可获取城市ID,dataSize即可获取城市离线包大小获取所有支持离线地图的城市
ArrayList<MKOLSearchRecord> records2 = mOffline.getOfflineCityList();
获取已下过的离线地图信息
ArrayList<MKOLUpdateElement> localMapList=mOffline.getAllUpdateInfo();
注意,数据包大小需要做如下处理
/**
* V4.5.0起,保证数据不溢出,使用long型保存数据包大小结果
*/
public String formatDataSize(long size) {
String ret = "";
if (size < (1024 * 1024)) {
ret = String.format("%dK", size / 1024);
} else {
ret = String.format("%.1fM", size / (1024 * 1024.0));
}
return ret;
}
搜索离线城市
ArrayList<MKOLSearchRecord> records = mOffline.searchCity(cityNameView .getText().toString());
开始下载
mOffline.start(cityid);
暂停下载
mOffline.pause(cityid);
删除离线地图
mOffline.remove(cityid);
更新下载
mOffline.update(cityid);//更新下载
检查是否有更新
MKOLUpdateElement e = (MKOLUpdateElement) getItem(index);
通过e.update返回boolean,判断下载的离线地图是否有更新
通过e.geoPt.longitude获取纬度
通过e.geoPt.latitude获取经度
注意在Activity周期onpause里判断,暂停下载
MKOLUpdateElement temp = mOffline.getUpdateInfo(cityid);
if (temp != null && temp.status == MKOLUpdateElement.DOWNLOADING) {
mOffline.pause(cityid);
}
在实现的MKOfflineMapListener方法onGetOfflineMapState中判断,可以更新进度提示,更新提示等
@Override
public void onGetOfflineMapState(int type, int state) {
switch (type) {
case MKOfflineMap.TYPE_DOWNLOAD_UPDATE: {
MKOLUpdateElement update = mOffline.getUpdateInfo(state);
// 处理下载进度更新提示
if (update != null) {
stateView.setText(String.format("%s : %d%%", update.cityName,
update.ratio));
updateView();
}
}
break;
case MKOfflineMap.TYPE_NEW_OFFLINE:
// 有新离线地图安装
Log.d("OfflineDemo", String.format("add offlinemap num:%d", state));
break;
case MKOfflineMap.TYPE_VER_UPDATE:
// 版本更新提示
// MKOLUpdateElement e = mOffline.getUpdateInfo(state);
break;
default:
break;
}
}
本文主要做于收集整理笔记使用,关于文章的源码,请移步我的GitHub