使用Swift在MapView上绘制多边形

4

我有一个 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()
    }

}

我遇到的问题是启动地图视图时,如预期一样没有在地图顶部显示任何内容。我已确认我的所有坐标都是有效的,并且符合我的意图,但是我的当前设置未按预期在地图上绘制。该如何正确实现?
1个回答

2
您对于 rendererFor 的签名不正确。请在您的方法中添加断点或日志语句以查看它是否被调用。
正确的签名为:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接