首页 > 解决方案 > MapBox Vector Tiles Overlay 在 MapKit 中使用 MKTileOverlay

问题描述

我们正在尝试在 MapKit 地图上叠加 MapBox 矢量切片,但目前无济于事。MKTileOverlay 显然不支持 MVT,那么 MapKit 的哪些功能可以让我们将这些图块(包括特征、缩放级别等)叠加到我们现有的 Apple 地图上?

对于我们的用例,使用光栅图块不是一个选项。瓦片必须是矢量瓦片。

func addMap() {
    let url = "https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/1/0/0.mvt?access_token=YOUR_MAPBOX_ACCESS_TOKEN"
    
    let tileOverlay = MKTileOverlay(urlTemplate: url)
    
    mapView.addOverlay(tileOverlay)
}

标签: iosswiftmapkitmapboxmkmapview

解决方案


从 Apple MapKit文档中MKTileOverlay,需要光栅或位图图像

用位图图像块覆盖地图区域的叠加层。


由于 iOS 版 MapKit 需要栅格,因此可以使用 Mapbox Raster Tiles API 来提供 Mapbox 切片的栅格版本。

您的 Swift URL 如下所示:

let url = "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/256/{z}/{x}/{y}@2x?access_token=YOUR_MAPBOX_ACCESS_TOKEN"

您可以查看 Mapbox Raster Tile API 服务的示例(在 Mapbox Docs 中有说明)。

curl https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/256/9/89/206@2x?access_token=YOUR_MAPBOX_ACCESS_TOKEN

在此处输入图像描述


推荐阅读