Mapbox:如果图片大小大于2048 * 2048,则为黑色

时间:2019-04-30 13:02:09

标签: ios swift mapbox

我尝试使用Mapbox在地图上添加图像。 我点击了以下链接:https://docs.mapbox.com/ios/maps/examples/image-source/

如果图像尺寸大于2048 * 2048,图像将以黑色显示,如下所示: enter image description here

图像通常应如下所示: enter image description here

如何使图像无限制地显示为黑色?

1 个答案:

答案 0 :(得分:0)

您似乎正在遇到iOS Maps SDK https://github.com/mapbox/mapbox-gl-native/issues/12989的此已知问题。

一种可能的解决方法是将地理参考图像上传到您的Mapbox帐户,然后在运行时以MGLRasterStyleLayer的形式添加到您的地图。您可以在此处查看此方法的示例:https://docs.mapbox.com/ios/maps/examples/image-source/

编辑:有关建议的解决方法的详细信息

Mapbox的iOS Maps SDK允许您在运行时应用栅格图块。您也可以upload geo-referenced images (a.k.a. GeoTiffs) to your Mapbox account,Mapbox会将其转换为栅格图块,并为您提供一个“地图ID”,使您可以从Mapbox的API中检索此图块。地图ID看起来像这样:riastrad.1ckjd53j(即“ username.unique_id”)。

一旦有了地图ID,就可以使用其中的一个GL SDK在运行时使用该ID将栅格图块集添加到任何地图。

在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⚠️

工作