浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

iOS 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

简介

使用离线地图,可满足在无网络环境下查看地图信息的需求,在有离线地图的情况下,地图SDK会优先加载离线地图。

开始使用

初始化离线地图

//引入头文件
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Map/BMKMapComponent.h>
//离线地图类的实例
@property (nonatomic, strong) BMKOfflineMap *offlineMap; 

//实例化离线地图类BMKOfflineMap对象
_offlineMap = [[BMKOfflineMap alloc] init];
//设置离线地图类的代理
_offlineMap.delegate = self;

获取批量城市列表

首先,要先了解BMKOLSearchRecord为离线地图搜索城市记录信息类,属性如下表:

cityName
城市名
size 数据包总大小
cityID 城市ID
cityType 城市类型 0:全国;1:省份;2:城市;如果是省份,可以通过childCities得到子城市列表
childCities 子城市列表

百度地图提供了两种快速批量获取城市离线地图的接口:热门城市列表,所有城市列表; 1.获取热门城市列表,代码如下:

//数组元素为BMKOLSearchRecord
NSArray *hotCitys = [_offlineMap getHotCityList];

2.获取所有支持离线地图的城市列表,代码如下:

//数组元素为BMKOLSearchRecord
NSArray * offlineCitys = [_offlineMap getOfflineCityList];

开始下载 调用离线地图下载接口start,根据城市编码下载离线地图,接口参数为cityID,cityID表示每个城市的唯一标识

NSArray* records = [_offlineMap searchCity:@"北京"];  
BMKOLSearchRecord* oneRecord = [records objectAtIndex:0];  
[_offlineMap start:oneRecord.cityID];

下载状态

首先要先了解离线地图更新信息BMKOLUpdateElement,属性如下表:

cityName
城市名
cityID 城市ID
size 已下载数据大小,单位:字节
serversize 服务端数据大小,当update为YES时有效,单位:字节
ratio 下载比率,100为下载完成,下载完成后会自动导入,status为4时离线包导入完成
status 下载状态, -1:未定义 1:正在下载 2:等待下载 3:已暂停 4:完成 5:校验失败 6:网络异常 7:读写异常 8:Wifi网络异常 9:离线包数据格式异常,需重新下载离线包 10:离线包导入中
update 更新状态,离线包是否有更新(有更新需重新下载)
pt 城市中心点

获取离线地图下载事件类型和状态的代码如下:

///离线地图delegate,用于获取通知
#pragma mark – BMKOfflineMapDelegate
/**
 返回通知结果
 
 @param type 事件类型
 @param state 事件状态
 type为TYPE_OFFLINE_UPDATE,表示正在下载或更新城市id为state的离线包,
 type为TYPE_OFFLINE_ZIPCNT,表示检测到state个离线压缩包,
 type为TYPE_OFFLINE_ADD,表示新安装的离线地图数目,
 type为TYPE_OFFLINE_UNZIP,表示正在解压第state个离线包,
 type为TYPE_OFFLINE_ERRZIP,表示有state个错误包,
 type为TYPE_VER_NEWVER,表示id为state的城市离线包有新版本,
 type为TYPE_OFFLINE_UNZIPFINISH时,表示扫瞄完成,成功导入state个离线包
 */
- (void)onGetOfflineMapState:(int)type withState:(int)state {
    switch (type) {
        case TYPE_OFFLINE_UPDATE:
        {
            /**
             *返回指定城市id离线地图更新信息
             *@param cityID 指定的城市id,此时state即为cityID
             *@return 指定城市id离线地图更新信息
             */            
BMKOLUpdateElement *updateElement = [_offlineMap getUpdateInfo:state];
           
            break;
        }
        case TYPE_OFFLINE_NEWVER:
            break;
        case TYPE_OFFLINE_ZIPCNT:
            break;
        case TYPE_OFFLINE_ERRZIP:
            break;
        case TYPE_OFFLINE_UNZIPFINISH:
            break;
        default:
            NSLog(@"default");
            break;
    }
}

暂停下载

[_offlineMap pause: oneRecord.cityID];

删除下载

[_offlineMap remove: oneRecord.cityID];

更新下载

[_offlineMap update: oneRecord.cityID];
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消