Swift 如何让用户靠近我在geofire、Firebase中的位置
有了这段代码,我只从Geolocs得到一个值,就是key和location,而不是附近的位置。这有什么问题吗Swift 如何让用户靠近我在geofire、Firebase中的位置,swift,firebase,location,geofire,Swift,Firebase,Location,Geofire,有了这段代码,我只从Geolocs得到一个值,就是key和location,而不是附近的位置。这有什么问题吗 var geoFireRef: DatabaseReference? var geoFire: GeoFire? var myQuery: GFQuery? func Geofire() { geoFireRef = Database.database().reference().child("Geolocs") geoFire = GeoF
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
})
}
})
}
使用键将GeoFire位置与所有位置分开,以引用其他附加数据,例如用户信息或帖子信息。因为混合静态和动态数据并不是存储数据的最有效方式 请参见此处的“我的数据结构和查询”:
我不明白你的意思。你的意思是我有一个单独设置的位置,并在其他函数/类中进行查询???是的。使用您正在执行的.uid键添加您的位置。但是,请将有关用户的所有其他信息分开。然后,当你运行一个查询时,你将得到一堆密钥,然后你可以引用它们并获得额外的信息。我得到了,但我没有得到,我只得到一个密钥,这是我当前的用户ID,我在Geolock中设置了它。这个问题有点不清楚,没有足够的数据来真正理解这个问题;一致引用您的类变量(self.geoFire和geoFire),我不确定它们不只是let语句的原因,如let geofiref=…,currentLocation未定义,因此我们不知道这是什么,不要在用户节点中存储坐标,因为这是geolocs节点的用途。另外,检查两个答案哦,和你的屏幕截图,你只有一个位置的用户,这是这个(管理员)用户。如果有更多的数据,你可能应该包括它作为文本请,没有截图。请不要在您的问题中包含图像。将代码和结构作为文本包含。要获取Firebase结构,请使用Firebase控制台->导出JSON并复制粘贴结构片段。请参阅您的第一条评论链接,帮助我了解我面临的实际问题。谢谢