为了离线使用mapbox,我创建了一个mymap.mbtiles文件,我的应用程序将使用该文件来显示 map 。用户可以按一个按钮,相应的.mbtiles文件将被下载并保存在documents目录中。

但是我的应用程序在此行崩溃:

RMMBTilesSource *offlineSource = [[RMMBTilesSource alloc] initWithTileSetResource:@"MYMAP" ofType:@"mbtiles"];
        _mapView = [[RMMapView alloc] initWithFrame:self.view.bounds andTilesource:offlineSource];

错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'

就像this问题一样。

这曾经可以正常工作,但在我更新到较新版本的MapBox的过程中出现此错误。

该链接中问题的答案是,您的.mbtiles文件需要成为您的项目目标的一部分,并添加到捆绑软件中。下载文件并将其保存到文档目录是否不够?如果没有,我该如何解决,以便.mbtiles文件可以下载而不是由开发人员预先导入。

最佳答案

代替使用用于捆绑软件资源的-initWithTileSetResource:ofType:,请尝试-initWithTileSetURL:并指向documents目录中的文件。

10-08 17:00