我已经将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)
}