Swift-从Firestore检索地理位置,如何将其显示为地图注释

时间:2018-09-17 19:11:06

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

我有以下代码可检索我存储在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广告已用于硬编码坐标,现在我需要显示提取的坐标。希望这已经足够清楚了,谢谢。

1 个答案:

答案 0 :(得分:3)

我认为您要问的是如何从Firestore地理位置(??)得出纬度和经度。尝试一下,如果不是您要的,请告诉我,我将进行编辑。

暂时假设您具有这样的Firestore结构

HttpLoggingInterceptor

然后阅读其中的内容并获取经度和纬度。

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

输出为

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:)
            }
        }
    }
}