繁体   English   中英

Swift - 从Firestore检索Geopoints,如何将它们显示为地图注释

[英]Swift - Retrieving Geopoints from Firestore, how to show them as map annotations

我有以下代码检索我存储在Google Firestore中的坐标:

    let locationsRef = db.collection("locatioInfo")
    locationsRef.getDocuments { (querySnapshot, err) in
        if let err = err {
            print("Error receiving Firestore snapshot: \(err)")
        } else {
            for document in querySnapshot!.documents {
                print("\(document.documentID) => \(document.data())")
            }
        }
    }

产生这个输出:

location1 => ["geopoint": <FIRGeoPoint: (50.086421, 14.452333)>]
location2 => ["geopoint": <FIRGeoPoint: (50.086442, 14.452268)>]

我的问题是:如何将获取的FIRGeoPoints转换为CLLocationCoordinates2D或简单地说:我如何使用这些坐标并在地图上显示它们?

我有一个MKAnnotationView已经设置广告用于硬编码坐标,现在我需要显示获取的坐标。 希望这很清楚,在此先感谢。

我想你要问的是如何从Firestore geopoint(??)中推导出纬度和经度。 试试这个,如果不是你问的问题,请告诉我,我会编辑。

假设你有一个像这样的Firestore结构

coordinates
   point_0
       coords: [49N, 44E]
   point_1
       coords: [67N, 30E]

然后阅读那些并获得lat和lon。

self.db.collection("coordinates").getDocuments() { (querySnapshot, err) in
    if let err = err {
        print("Error getting documents: \(err)")
    } else {
        for document in querySnapshot!.documents {
            if let coords = document.get("coords") {
                let point = coords as! GeoPoint
                let lat = point.latitude
                let lon = point.longitude
                print(lat, lon) //here you can let coor = CLLocation(latitude: longitude:)
            }
        }
    }
}

而输出是

49.0 44.0
67.0 30.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM