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



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

MBXMapKit看起来很棒,并且几乎是我正在寻找的。我可以看到,通过很少的修改,MBXMapKit可以调整为指向本地的。mbtiles数据库文件。

是否有任何方法可以使用MBXMapKit框架来实现这一点而无需调整?我确实读了文档,但找不到一个直截了当的答案。我确实在MBXOfflineMapDatabase上找到了一个名为-initWithContentsOfFile:的私有方法,它听起来很有前途,看起来像我需要的——如果我暴露并使用该方法,有什么要注意的吗?

另一种选择是子类MKTileOverlay和使用-loadTileAtPath:result:,这很容易做到,但也需要管理连接到sqlite文件等

查看最新的MBTiles支持:

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

它可能会在下一个版本中出现。这应该与正常的性能缓存(NSURLCache)以及离线数据库(也是sqlite支持的)分开,离线数据库意味着将单个tile下载一个接一个地放入缓存中。

我花了不少时间才弄明白这个问题,但这里有一个链接,让我走上了正确的道路。

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

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

最新更新