在 MapKit 中使用 MKTileOverlay 的 MapBox 矢量切片叠加

MapBox Vector Tiles Overlay using MKTileOverlay in MapKit

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

我们的用例不适合使用光栅图块。瓦片必须是矢量瓦片。

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)
}

来自 Apple MapKit docs for MKTileOverlay,需要光栅或位图图像

An overlay that covers an area of the map with tiles of bitmap images.


由于 MapKit for iOS 需要栅格,可能 使用 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 栅格图块 API 服务的示例(这在 Mapbox 文档中有说明)。

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