安卓百度离线地图的下载以及使用

本节整理百度离线地图下载,暂停,更新。删除等知识

初始化离线地图

mOffline = new MKOfflineMap();
mOffline.init(this);
  • 获取热门城市列表
    ArrayList records1 = mOffline.getHotCityList();
    通过list列表的cityName即可获取城市名,cityID即可获取城市ID,dataSize即可获取城市离线包大小

  • 获取所有支持离线地图的城市
    ArrayList records2 = mOffline.getOfflineCityList();

  • 获取已下过的离线地图信息
    ArrayList 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 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

你可能感兴趣的:(安卓百度离线地图的下载以及使用)