地图叠加层未在地图上填充

时间:2019-10-21 13:58:07

标签: swift firebase google-cloud-firestore mapkit ios13

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

0 个答案:

没有答案
相关问题