使用离线地图,可满足在无网络环境下查看地图信息的需求,在有离线地图的情况下,地图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为离线地图搜索城市记录信息类,属性如下表:
百度地图提供了两种快速批量获取城市离线地图的接口:热门城市列表,所有城市列表;
1.获取热门城市列表,代码如下:
//数组元素为BMKOLSearchRecordNSArray *hotCitys = [_offlineMap getHotCityList];
2.获取所有支持离线地图的城市列表,代码如下:
//数组元素为BMKOLSearchRecordNSArray *offlineCitys = [_offlineMap getOfflineCityList];
调用离线地图下载接口start,根据城市编码下载离线地图,接口参数为cityID,cityID表示每个城市的唯一标识
NSArray *records = [_offlineMap searchCity:@"北京"];BMKOLSearchRecord *oneRecord = [records objectAtIndex:0];[_offlineMap start:oneRecord.cityID];
首先要先了解离线地图更新信息BMKOLUpdateElement,属性如下表:
获取离线地图下载事件类型和状态的代码如下:
///离线地图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]
上一篇
下一篇