gpt4 book ai didi

ios - GeoFire Swift 3 - 保存和更新坐标

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:48 24 4
gpt4 key购买 nike

我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中。

我不确定如何更新新坐标,因为它们每秒都会更改/更新。使用 childByAutoId,它会为每辆自行车生成一个新的唯一 ID。

如何引用这个唯一的自行车 ID?例如,用户将由 FIRAuth.auth()?.currentUser?.uid 调用。这可能吗?

 let geofireRef = FIRDatabase.database().reference().child("Bike").childByAutoId()
let geoFire = GeoFire(firebaseRef: geofireRef)

var data = geoFire?.setLocation(CLLocation(latitude: userIncrementLat, longitude: userIncrementLong), forKey: "BikeId")

我的 Firebase 数据库结构看起来像...

 Root
1. Bike
2. UniqueUID Number (Firebase)
3. BikeId
4. g
l
5. 0:
1:

最佳答案

这是我的 Firebase 数据库结构,用于按时间更新用户位置并检索附近的用户以在 map 上显示:

db-root
"users" : {
<userUID> : {
"someKey" : "someValue",
...
}
}
"users_location" : {
<userUID> : {
<geofireData> ...
}
}

要使用的变量:

let ref = FIRDatabase.database().reference()
let geoFire = GeoFire(firebaseRef: ref.child("users_location"))

更新记录的用户位置:

func updateUserLocation() {

if let myLocation = myLocation {

let userID = FIRAuth.auth()!.currentUser!.uid
geoFire!.setLocation(myLocation, forKey: userID) { (error) in
if (error != nil) {
debugPrint("An error occured: \(error)")
} else {
print("Saved location successfully!")
}
}

}
}

要查找附近的用户,我使用 findNearbyUsers 函数。查找附近的用户并将用户的 UID key 保存到 nearbyUsers 数组中很有用。 observeReady 函数在查询完成后执行,并使用 UID 检索用户详细信息(我用它来在 map 上显示用户详细信息)。

func findNearbyUsers() {

if let myLocation = myLocation {

let theGeoFire = GeoFire(firebaseRef: ref.child("users_location"))
let circleQuery = theGeoFire!.query(at: myLocation, withRadius: radiusInMeters/1000)

_ = circleQuery!.observe(.keyEntered, with: { (key, location) in

if !self.nearbyUsers.contains(key!) && key! != FIRAuth.auth()!.currentUser!.uid {
self.nearbyUsers.append(key!)
}

})

//Execute this code once GeoFire completes the query!
circleQuery?.observeReady({

for user in self.nearbyUsers {

self.ref.child("users/\(user)").observe(.value, with: { snapshot in
let value = snapshot.value as? NSDictionary
print(value)
})
}

})

}

}

希望对你有帮助

关于ios - GeoFire Swift 3 - 保存和更新坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39726744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com