Swift IOS 叠加

Swift IOS Overlay

我的 IOS 地图没有在其上渲染 NOAA 瓦片。有人可以告诉我哪里出了问题吗?这是我的视图控制器。它只是一个标准的 mapkit 查看器。无论如何,当我 运行 这段代码时,它不起作用,只是给我一个标准的卫星地图。有谁知道我做错了什么? 感谢您能给我的任何帮助。

周末好好休息。

import UIKit
import MapKit


class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
    @IBOutlet weak var mapView: MKMapView!
    //Linking MapView
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.mapView.delegate = self

        self.mapView.mapType = MKMapType.satellite

        let centre = CLLocationCoordinate2D(latitude: 39.2189, longitude: -76.0690)

       let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)

       let region = MKCoordinateRegion(center: centre, span: span)
       self.mapView.setRegion(region, animated: false)
       self.mapView.regionThatFits(region)



       let template = "https://tileservice.charts.noaa.gov/tiles/50000_1/{z}/{x}/{y}.png"

       let carte_indice = MKTileOverlay(urlTemplate:template)


       carte_indice.isGeometryFlipped = true

       carte_indice.canReplaceMapContent = false


       self.mapView.addOverlay(carte_indice)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func mapView(
        mapView: MKMapView!, rendererFor overlay: MKOverlay!) -> MKOverlayRenderer!
    {

    if overlay is MKTileOverlay{
        var renderer = MKTileOverlayRenderer(overlay:overlay)
        renderer.alpha = 0.8
        return renderer
    }
        return nil
    }


}

想了很久,终于解决了我的问题。如果有人需要,请发布解决方案。

感谢 GJ Nilsen 帮助我解决了这个问题。问题是 NOAA tiles 没有覆盖所有地方,所以我通过简化强制加载来解决它。

if overlay is MKTileOverlay{
    var renderer = MKTileOverlayRenderer(overlay:overlay)
    renderer.alpha = 0.8
    return renderer
}
else{
    var renderer = MKTileOverlayRenderer(overlay:overlay)
    renderer.alpha = 0.8
    return renderer
}