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
}
我的 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
}