您现在的位置:

离线地图

为了节约流量,可以将某省市的离线地图下载到手机SD卡中,在没有网络连接的情况下也能自由使用地图服务。【Navinfo Navigation SDK for iOS】产品提供了数据商店功能,初始化数据商店代码如下:

在controller中导入数据商店头文件

  1. #import <iNaviCore/MBDatastoreItem.h>
  2. #import <iNaviCore/MBDataUpdateTask.h>

初始化

  1. _dataStore = [[MBDatastore alloc] init];
  2. _dataStore.delegate = self;
  3. [_dataStore setNeedsRefresh];

实现代理方法

获得数据源

  1. - (void) datastoreRefreshed:(MBDatastore *)ds {
  2. NSArray *dataStoreItems = ds.root.subnodes;
  3. NSMutableArray *provinceItems = [NSMutableArray arrayWithCapacity:dataStoreItems.count];
  4. NSMutableArray *cityItems = [NSMutableArray array];
  5. NSMutableArray *cityDataStoreItems = [NSMutableArray array];
  6. for (MBDatastoreItem*provinceItem in dataStoreItems) {
  7. CTMLObj *provinceNode = [CTMLObj nodeWithOwnID:provinceItem.itemId name:provinceItem.name level:1];
  8. [provinceItems addObject:provinceNode];
  9. if (provinceItem.subnodes.count) {
  10. for (MBDatastoreItem* cityItem in provinceItem.subnodes) {
  11. MLNodelObj *cityNode = [MLNodelObj nodeWithParentID:provinceItem.itemId ownID:cityItem.itemId name:cityItem.name level:2 isleaf:YES isroot:NO isExpand:NO];
  12. [cityItems addObject:cityNode];
  13. [cityDataStoreItems addObject:cityItem];
  14. }
  15. } else {
  16. [cityDataStoreItems addObject:provinceItems];
  17. }
  18. provinceNode.subNodes = cityItems;
  19. }
  20. }

其他代理回调

  1. // 开始下载
  2. (void)datastoreDownloadingDataItemBegan:(MBDatastore *)ds itemId:(NSString *)itemId;
  3. // 下载中进度回调
  4. (void)datastoreDownloadingDataItemProgressUpdated:(MBDatastore *)ds itemId:(NSString *)itemId withPercent:(CGFloat)percent;
  5. // 下载完成
  6. (void)datastoreDownloadingDataItemCompleted:(MBDatastore *)ds itemId:(NSString *)itemId;
  7. // 下载失败
  8. - (void)datastoreDownloadingDataItemFailed:(MBDatastore *) ds itemId:(NSString *)itemId withErrCode:(MBDatastoreErrCode)code;
  9.  
  10. // 开始安装
  11. (void)datastoreInstallDataItemBegan:(MBDatastore *)ds itemId:(NSString *)itemId;
  12. // 安装中进度更新回调
  13. (void)datastoreInstallDataItemProgressUpdated:(MBDatastore *) ds itemId:(NSString *)itemId withPercent:(CGFloat)percent;
  14. // 安装完成
  15. (void)datastoreInstallDataItemFinished:(MBDatastore *)ds itemId:(NSString *)itemId;
  16. // 安装失败
  17. - (void)datastoreInstallDataItemFailed:(MBDatastore *)ds itemId:(NSString *)itemId withErrCode:(MBDatastoreErrCode)code;
  18.  
  19. // 数据状态改变
  20. - (void)dataItemStateChanged:(MBDatastore *)ds itemId:(NSString *)itemId;

具体实现请参照SDKDemo中MBDataStoreController。

返回顶部