0

我正在使用以下代码将自定义地图图块加载到我的应用程序中。当我使用 mainBundle 作为路径时,它按预期工作:

NSString *baseURL = [[[NSBundle mainBundle] bundleURL] absoluteString];
NSString *urlTemplate = [baseURL stringByAppendingString:@"/tiles/{z}/{x}/{y}.png"];
self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
self.tileOverlay.canReplaceMapContent=YES;
[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];

但是,如果我尝试更改文档文件夹的路径(因为我打算下载瓷砖文件夹并将它们存储在文档文件夹中),则以下代码不起作用:

NSString *destinationPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *urlTemplate = [destinationPath stringByAppendingString:@"tiles/{z}/{x}/{y}.png"];

self.tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:urlTemplate];
self.tileOverlay.canReplaceMapContent=YES;
[self.mapView insertOverlay:self.tileOverlay belowOverlay:self.gridOverlay];

任何提示都会很有用!

注意: tiles 文件夹存在于我的路径中。更具体地说,以下代码返回 YES

NSString* foofile = [destinationPath stringByAppendingPathComponent:@"/tiles/17/70759/49235.png"]; //as an example
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];
4

1 回答 1

1

我刚刚发现为什么代码不起作用。

文档路径应为:

NSString *destinationPath = [[self applicationDocumentsDirectory]  absoluteString];

代替 :

NSString *destinationPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

其中 applicationDocumentsDirectory 是:

 - (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

以下链接https://stackoverflow.com/a/34543841/1465756帮助我找到另一种获取文档路径的方法。

于 2018-01-24T08:54:55.467 回答