使用 Geofire 从 Firebase 查询特定节点?

Query specific nodes from Firebase using Geofire?

最近怎么样?

我在 Firebase 中有以下数据结构:

  reports  
   .XbCacF7tHosOZxxO(child generated by auto-id)  
     ..userId: "XvSjDkLsaA8Se"  
     ..message: "Text goes here"  
     ..latitude: "30.123131"  
     ..longitude: "50.3313131"

   .Yoa7HsgTuWm97oP(child generated by auto-id)  
     ..userId: "XvSjDkLsaA8Se"  
     ..message: "Text goes here 2"  
     ..latitude: "30.99999"  
     ..longitude: "50.99999"  

  users  
   .XvSjDkLsaA8Se  
     ..name: "John"  
     ..email: "john@email.com" 

该应用的理念是用户可以制作多个 "reports"。

将来,如果我有数百个 "reports",我不希望它使我的查询过载。所以我试图找到一种使用 Geofire 查询的方法。

我的问题是:有什么方法可以使用 Geofire 的半径特征和 [=25= 的纬度和经度来获取我附近的 "reports" ]?

谢谢!

我刚刚找到了一种方法。

我必须在创建报告时使用 Auto Id 生成的相同 ID 保存我的 Geofire 节点。

我的应用在 Firebase 上保存数据的功能:

//Save data to Firebase Database
let key = report.childByAutoId().key
report.child(key).setValue(dataToSaveInFirebase)

//Save data to Geofire node
let userLocal = database.child("reports_locations")
let geoRef = GeoFire(firebaseRef: userLocal)

let location = CLLocation(latitude: self.localUser.latitude, longitude: self.localUser.longitude)

geoRef?.setLocation(location, forKey: key)

希望对其他人有所帮助