Рисование многоугольника на MapView с помощью Swift - PullRequest
1 голос
/ 09 октября 2019

У меня есть 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 Ответ

1 голос
/ 09 октября 2019

Ваша подпись для rendererFor неверна. Добавьте точку останова или оператор журнала в ваш метод, и вы увидите, что он не вызывается.

Правильная подпись:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { ... }
...