Карта: изображение черного цвета, если его размер превышает 2048 * 2048 - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь добавить изображение на карту с помощью Mapbox. Я перешел по этой ссылке: https://docs.mapbox.com/ios/maps/examples/image-source/

Если размер изображения превышает 2048 * 2048, изображение выглядит черным, например: enter image description here

Изображение обычно должно выглядеть так: enter image description here

Как сделать так, чтобы изображение не отображалось черным без ограничения?

1 Ответ

1 голос
/ 30 апреля 2019

Похоже, вы столкнулись с этой известной проблемой с 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 ⚠️

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...