我有一个MKMapView
,还有一组要与多边形连接以绘制矩形的坐标。下面是我开始的代码。
import UIKit
import MapKit
class mapViewViewController: UIViewController {
@IBOutlet var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
map?.delegate=self
let startingPoint1 = ...
let startingPoint2 = ...
let endingPoint1 = ...
let endingPoint2 = ...
var coordinateInput:[CLLocationCoordinate2D]=[startingPoint1,startingPoint2,endingPoint1,endingPoint2]
let line = MKPolygon(coordinates:&coordinateInput, count:4)
map.addOverlay(line)
}
extension mapViewViewController: MKMapViewDelegate{
func map(_ map: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer{
if overlay is MKPolygon{
let renderer = MKPolygonRenderer(polygon: overlay as! MKPolygon)
renderer.fillColor=UIColor.red.withAlphaComponent(0.5)
renderer.strokeColor=UIColor.orange
renderer.lineWidth=4
return renderer
}
return MKOverlayRenderer()
}
}
我遇到的问题是,当我启动地图视图时,没有按预期在地图顶部显示任何内容。我已经确认我所有的坐标都是有效的,并且已经达到了预期的目标,但是我当前的设置并未按预期在地图上绘制。完成此操作的正确方法是什么?
答案 0 :(得分:1)
您对rendererFor
的签名不正确。在您的方法中添加一个断点或日志语句,您将看到它没有被调用。
正确的签名是:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { ... }