您现在的位置:

离线地图

为了节约流量,可以将某省市的离线地图下载到手机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。

返回顶部