【发布时间】:2019-01-05 16:21:27
【问题描述】:
使用这段代码,我只能从 Geolocs 获得一个值,只是键和位置,而不是附近的位置。它有什么问题
var geoFireRef: DatabaseReference?
var geoFire: GeoFire?
var myQuery: GFQuery?
func Geofire() {
geoFireRef = Database.database().reference().child("Geolocs")
geoFire = GeoFire(firebaseRef: geoFireRef!)
self.geoFire?.setLocation(currentLocation!, forKey:Auth.auth().currentUser!.uid)
myQuery = geoFire?.query(at: currentLocation!, withRadius: 100)
myQuery?.observe(.keyEntered, with: { (key, location) in
if key != Auth.auth().currentUser?.uid
{
let ref = Database.database().reference().child("Users").child(key)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
let id = snapshot.key
})
}
})
}
【问题讨论】:
-
这个问题有点不清楚,没有足够的数据来真正理解这个问题;始终如一地引用您的类变量(self.geoFire 和 geoFire),我不确定它们不只是 let geoFireRef = ... 中的 let 语句的原因,currentLocation 没有定义所以我们没有不知道那是什么,不要在用户节点中存储坐标,因为这就是 geolocs 节点的用途。另外,请查看this question 的两个答案
-
哦,根据您的屏幕截图,您只有一个用户位置,那就是这个(管理员)用户。如果有更多数据,您可能应该将其包含为文本,请不要截图。请不要在您的问题中包含图片。包括代码和结构作为文本。要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON 并复制粘贴您的结构的 sn-p。见images and links are evil
-
您的第一条评论链接对我了解我面临的实际问题有很大帮助,谢谢
标签: swift firebase location geofire