使用MapBox GL的iOS预打包的离线矢量地图

我终于找到了一种解决方案,可以为我的地理游戏的iOS版本提供离线矢量地图,这在哪里? 使用MapBox GL。 我想在这里向您展示解决方案。

但首先:我是iOS和Android地理游戏的开发者,下载量超过600万,但我仍将MBTiles栅格地图与旧版MapBox框架结合使用。 真可惜! 这种方法存在一系列问题,例如大文件大小和缺乏样式灵活性,从而给我的用户带来了不太吸引人的游戏体验。 现在是时候彻底改变这种情况了。

输入矢量图块:周围有很多矢量地图框架(例如WhirlyGlobe,Tangram-ES,Mapzen,Nutiteq),我花了一些时间对它们全部进行了全面测试。 但是它们都不符合我的所有要求:

  • 带有小文件大小的预打包离线图块源
  • 开源的
  • 快速渲染
  • 样式灵活

它们中的大多数在渲染矢量图块时均缺乏性能,从而导致丑陋的伪影。 我确实很喜欢WhirlyGlobe中的Globe选项。

最接近我的需求的软件包是MapBox GL 。 唯一缺少的是iOS的离线选项。 但是我找到了一个简单的方法来实现。

  1. 使用MapBox Studio Classic创建矢量地图源并将其导出为MBTiles。
  2. 使用mb-util将MBTiles文件转换为单个pbf文件。 压缩它。
  3. 将这些CocoaPods添加到您的Podfile中: MapBox-iOS-SDK,GCDWebServer,objective-zip
  4. 创建一个GCDWebServer实例,通过NSBundle中的一个zip文件提供PBF矢量地图文件。
  5. 使用指向您本地Web服务器的自定义样式json加载MGLMapView

瞧! 离线矢量地图具有灵活的样式,小的文件大小和令人难以置信的性能。

您可以在Github jaysquared / mapbox-gl-ios-offline-example上找到一个示例项目。

您可以下载我的地理游戏 在哪里? 在iTunes上 包括矢量图。