Нарисуйте многоугольник в MapView с помощью Swift
У меня есть 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 ответ
Решение
Ваша подпись для rendererFor
это неверно. Добавьте в свой метод точку останова или оператор журнала, и вы увидите, что он не вызывается.
Правильная подпись:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { ... }