Похоже, вы столкнулись с этой известной проблемой с SDK для iOS Maps: https://github.com/mapbox/mapbox-gl-native/issues/12989.
Один из возможных способов - загрузить изображение с географической привязкой в свою учетную запись Mapbox, а затем добавить его вваша карта как MGLRasterStyleLayer
во время выполнения.Вы можете увидеть пример такого подхода здесь: https://docs.mapbox.com/ios/maps/examples/image-source/
Редактировать: более подробно о предлагаемом обходном пути
SDK Mapbox для iOS Maps позволяет применять растровые плитки во время выполнения.Вы также можете загрузить изображения с географической привязкой (также называемые GeoTiffs) в свою учетную запись Mapbox , и Mapbox преобразует это в набор растровых плиток и предоставит вам «Идентификатор карты», который позволяет вам извлекать этот набор плиток из API Mapbox.,Идентификатор карты выглядит следующим образом: riastrad.1ckjd53j
(то есть "username.unique_id").
Получив идентификатор карты, вы можете использовать его для добавления набора растровых плиток к любой карте во время выполнения с помощью одного из GLSDKs.
В iOS стандартный код этого выглядит следующим образом:
import Mapbox
class RasterSourceExample: UIViewController, MGLMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let mapView = MGLMapView(frame: view.bounds, styleURL: MGLStyle.darkStyleURL)
mapView.setCenter(CLLocationCoordinate2D(latitude: 43.457, longitude: -75.789), zoomLevel: 4, animated: false)
mapView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
mapView.tintColor = .darkGray
// Set the map view‘s delegate property.
mapView.delegate = self
view.addSubview(mapView)
}
func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
// Create the raster tile source object
let source = MGLRasterTileSource(identifier: "tileset-source", configurationURL: URL(string: "mapbox://riastrad.1ckjd53j"))
style.addSource(source)
// Create a raster layer from the MGLRasterTileSource.
let rasterLayer = MGLRasterStyleLayer(identifier: "raster-layer", source: source)
style.addLayer(rasterLayer)
}
}
⚠️ Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️