Я добавил mapView в свой контроллер представления, сделал контроллер представления делегатом и написал расширение с функцией MapView (redererFor), которая возвращает MKOverlayRenderer при вызове. Однако, когда я создаю объект многоугольника и добавляю это наложение в mapView, а затем создаю объект визуализации, который отображает это наложение, он все равно не заполняется на карте. За исключением яблочных документов, большинство других видео и учебных пособий устарели и не решают мою проблему.
func getPoints() {
let db = Firestore.firestore()
let ref = db.collection("Land")
let getPolygon = ref.getDocuments { (snap, err) in
if let err = err {
print("Error: \(err)")
} else {
for document in snap!.documents {
var place = document
self.polygons.append(place)
}
var count = 0
for location in self.polygons {
var polygonPoints: Array<CLLocationCoordinate2D> = []
func doIt(completion: (MKPolygon) -> ()) {
for data in location.data() {
count += 1
print("DATA \(data.value as! GeoPoint)")
var value = data.value as! GeoPoint
var lat = value.latitude
var long = value.longitude
var point = CLLocationCoordinate2D(latitude: lat, longitude: long)
polygonPoints.append(point)
}
var polygon = MKPolygon(coordinates: polygonPoints, count: 6)
completion(polygon)
}
doIt { (polygon) in
self.map.addOverlay(polygon)
self.renderer = MKOverlayRenderer(overlay: polygon)
}
}
}
}
}
Вот расширение ...
extension HomeViewController: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
return MKOverlayRenderer(overlay: overlay)
}