MBXMapKit使用本地.mbtiles数据库文件

时间:2014-06-27 16:16:52

标签: mapkit mapbox

我想使用MapKit(在osx上)显示从TileMill导出的排序的.mbtiles(sqlite)数据库中的自定义地图图块。

MBXMapKit看起来很棒,并且几乎我正在寻找的东西。我可以看到,只需很少修改,就可以调整MBXMapKit以指向本地.mbtiles数据库文件。

有没有办法使用MBXMapKit框架来完成这个而不需要调整?我确实阅读了文档,但无法找到直截了当的答案。我确实在MBXOfflineMapDatabase上找到了一个名为-initWithContentsOfFile:的私有方法,听起来很有希望并且看起来像我需要的东西 - 如果我暴露并使用该方法,还有什么需要注意的吗?

Alternate选项是子类MKTileOverlay并使用-loadTileAtPath:result:,这很容易做到,但也需要管理与sqlite文件的连接等。

2 个答案:

答案 0 :(得分:1)

请查看最新的MBTiles支持:

https://github.com/mapbox/mbxmapkit/issues/3

它可能会在下一个版本中发布。这应该是独特的,并且与正常性能缓存(NSURLCache)以及(也是SQLite支持的)脱机数据库分开,这些数据库用于逐个放置到缓存中的单个磁贴下载。

答案 1 :(得分:0)

花了我相当长的时间来解决这个问题,但这里的链接让我走上了正确的道路。

https://github.com/mapbox/mbxmapkit/pull/110/commits/8b9fbf3fd56ae804a38c737305f128fd43a8225d

由于某种原因,方法_mbtilesOverlay = [[MBXMBTilesOverlay alloc] initWithMBTilesURL:mbtilesURL];无法在最新版本的MBXMapKit上使用。我刚刚用链接中的文件替换了.m和.h文件,并使用MBXViewController.m作为指南来获取地图视图以显示图块叠加。