Swift IOS 覆盖

问题描述

我的 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 磁贴没有覆盖所有地方,所以我通过简化强制加载来解决它。

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
}