我使用skobbler和skmaps为下载供离线使用的地图上的某些区域的应用程序。 我用我的框架包的例子已经找到了代码,在此情况下,
MapJSONViewController
MapDownloadViewController
我还实施了应用程序委托代码,所以我每次启动应用程序时,将其下载并解析1MB左右的JSON
- (void)mapsVersioningManager:(SKMapsVersioningManager *)versioningManager loadedWithMapVersion:(NSString *)currentMapVersion
{
[[XMLParser sharedInstance] downloadAndParseJSON];
}
这有可能避免这种行为呢? 我不想,如果不需要下载JSON数据1MB的每一个应用程序初始化...也许我可以下载,其中包括在我的应用程序一个物理映射JSON文件有一个开始的版本? 或者这“地方行为”将带来我的应用程序很快用一个过时版本的json工作? 也许另一种行为是维护本地版本与数据和一周重新下载一次例如...看来我一个共同的问题,有一个人如何achive便利的行为?
是的,你可以包括JSON文件在您的应用程序和从磁盘中读取它。
在XMLParser.m与替换代码downloadAndParseJson:
- (void)downloadAndParseJSON
{
[self parseJSON];
NSString *libraryFolderPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"%@",libraryFolderPath);
}
和parseJSON有:
- (void)parseJSON
{
NSString *jsonString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Maps" ofType:@"json"] encoding:NSUTF8StringEncoding error:nil];
SKTMapsObject *skMaps = [SKTMapsObject convertFromJSON:jsonString];
AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
[appDelegate setSkMapsObject:skMaps];
self.isParsingFinished = YES;
[[NSNotificationCenter defaultCenter]postNotificationName:kParsingFinishedNotificationName object:nil];
}
在这里你可以找到一个修改的示范项目,读取从资源Maps.json文件(以.json文件包含在资源文件夹)。