iOS 7 中的 MKTileOverlay 与 mbtiles 数据库
Posted
技术标签:
【中文标题】iOS 7 中的 MKTileOverlay 与 mbtiles 数据库【英文标题】:MKTileOverlay in iOS 7 with mbtiles database 【发布时间】:2014-07-19 17:45:02 【问题描述】:有没有一种方法可以直接使用 mbtiles 数据库和 MKTileOverlay,而无需使用 MapBox 或任何其他第三方框架?
现在,我将图块存储在文件夹结构中,我正在使用的代码如下:
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"];
NSString *tileDirectoryURL = [NSURL fileURLWithPath:tileDirectory isDirectory:YES];
NSString *tileURL = [NSString stringWithFormat:@"%@Zz/y_x.png", tileDirectoryURL];
tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:tileURL];
[tileOverlay setGeometryFlipped:YES];
[mainMapView addOverlay:tileOverlay];
但现在我想要一个tiles.mbtiles sqlite 数据库,而不是文件夹中的文件。
请建议我该怎么做。如果我选择使用 sqlite 数据库,如何初始化 MKTileOverlay 对象。我将如何放置 x,y,z。
我浏览了 MKTileOverlay 的文档,发现:
- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *tileData, NSError *error))result
可以使用,但我不明白如何使用它?如果有人可以请给ma一个简短的例子,那将非常有帮助。
【问题讨论】:
嗨,我有同样的问题,我不想使用 mapbox。请问有没有使用mbtiles的例子?就我而言,OSMMapKit 无法正常工作...谢谢! @Eusthace。我无法直接使用 mbtiles 数据库。我必须将 PNG 存储在包中并使用上面的代码引用它们才能渲染它们。但是,这几乎是几年前的事了。希望现在有可用的选项来做到这一点。我知道 android 可以使用 mbtile 数据库来渲染图块,而无需使用第三方库。此外,在上面的代码中,geometry flipped 属性必须设置为 NO 才能正常工作。 感谢您的帮助。是的,但就我而言,我不知道为什么我不能从 maptiler 开始工作。你有工作示例吗?还是谢谢你! @eusthace 你找到从数据库中显示图块的方法了吗? 【参考方案1】:你可以看看这个项目是怎么做的……
https://github.com/t2wu/OSMMapKit
它似乎还没有完成,但它应该让你走上正确的道路。
【讨论】:
以上是关于iOS 7 中的 MKTileOverlay 与 mbtiles 数据库的主要内容,如果未能解决你的问题,请参考以下文章
iOS:在地图上绘制 MKTileOverlay 导致 CPU 使用率和内存高。我找不到原因。?