离线地图
为了节约流量,可以将某省市的离线地图下载到手机SD卡中,在没有网络连接的情况下也能自由使用地图服务。【Navinfo Navigation SDK for iOS】产品提供了数据商店功能,初始化数据商店代码如下:
在controller中导入数据商店头文件
- #import <iNaviCore/MBDatastoreItem.h>
- #import <iNaviCore/MBDataUpdateTask.h>
初始化
- _dataStore = [[MBDatastore alloc] init];
- _dataStore.delegate = self;
- [_dataStore setNeedsRefresh];
实现代理方法
获得数据源
- - (void) datastoreRefreshed:(MBDatastore *)ds {
- NSArray *dataStoreItems = ds.root.subnodes;
- NSMutableArray *provinceItems = [NSMutableArray arrayWithCapacity:dataStoreItems.count];
- NSMutableArray *cityItems = [NSMutableArray array];
- NSMutableArray *cityDataStoreItems = [NSMutableArray array];
- for (MBDatastoreItem*provinceItem in dataStoreItems) {
- CTMLObj *provinceNode = [CTMLObj nodeWithOwnID:provinceItem.itemId name:provinceItem.name level:1];
- [provinceItems addObject:provinceNode];
- if (provinceItem.subnodes.count) {
- for (MBDatastoreItem* cityItem in provinceItem.subnodes) {
- MLNodelObj *cityNode = [MLNodelObj nodeWithParentID:provinceItem.itemId ownID:cityItem.itemId name:cityItem.name level:2 isleaf:YES isroot:NO isExpand:NO];
- [cityItems addObject:cityNode];
- [cityDataStoreItems addObject:cityItem];
- }
- } else {
- [cityDataStoreItems addObject:provinceItems];
- }
- provinceNode.subNodes = cityItems;
- }
- }
其他代理回调
- // 开始下载
- (void)datastoreDownloadingDataItemBegan:(MBDatastore *)ds itemId:(NSString *)itemId;
- // 下载中进度回调
- (void)datastoreDownloadingDataItemProgressUpdated:(MBDatastore *)ds itemId:(NSString *)itemId withPercent:(CGFloat)percent;
- // 下载完成
- (void)datastoreDownloadingDataItemCompleted:(MBDatastore *)ds itemId:(NSString *)itemId;
- // 下载失败
- - (void)datastoreDownloadingDataItemFailed:(MBDatastore *) ds itemId:(NSString *)itemId withErrCode:(MBDatastoreErrCode)code;
- // 开始安装
- (void)datastoreInstallDataItemBegan:(MBDatastore *)ds itemId:(NSString *)itemId;
- // 安装中进度更新回调
- (void)datastoreInstallDataItemProgressUpdated:(MBDatastore *) ds itemId:(NSString *)itemId withPercent:(CGFloat)percent;
- // 安装完成
- (void)datastoreInstallDataItemFinished:(MBDatastore *)ds itemId:(NSString *)itemId;
- // 安装失败
- - (void)datastoreInstallDataItemFailed:(MBDatastore *)ds itemId:(NSString *)itemId withErrCode:(MBDatastoreErrCode)code;
- // 数据状态改变
- - (void)dataItemStateChanged:(MBDatastore *)ds itemId:(NSString *)itemId;
具体实现请参照SDKDemo中MBDataStoreController。