有没有一种方法可以直接将mbtiles数据库与MKTileOverlay结合使用,而无需使用MapBox或任何其他第三方框架?

现在,我将磁贴存储在文件夹结构中,下面使用的代码如下:

NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"];
NSString *tileDirectoryURL = [NSURL fileURLWithPath:tileDirectory isDirectory:YES];
NSString *tileURL = [NSString stringWithFormat:@"%@Z{z}/{y}_{x}.png", tileDirectoryURL];
tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:tileURL];
[tileOverlay setGeometryFlipped:YES];
[mainMapView addOverlay:tileOverlay];

但是现在我想要一个tile.mbtiles sqlite数据库,而不是文件夹中的文件。

请建议我该怎么做。如果选择使用sqlite数据库,如何初始化MKTileOverlay对象。我将如何放置{x},{y},{z}。

我浏览了MKTileOverlay的文档,发现:
- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *tileData, NSError *error))result

可以使用,但我不明白该如何使用?如果有人可以举一个简短的例子,那将非常有帮助。

最佳答案

您可以看一下这个项目的运作方式…

https://github.com/t2wu/OSMMapKit

它似乎还没有完成,但是它应该使您走上正确的道路。

09-25 20:48