- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 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/
我想为我的 CocoaPods 项目实现 GeoFire。因此,我将以下 pod 添加到我的 Podfile 中: pod 'GeoFire', :git => 'https://github.com
我在 Angular 6 上初始化 GeoFire 时遇到问题。当我尝试初始化 GeoFire 时, geofire__WEBPACK_IMPORTED_MODULE_2__ is not a con
current GeoFire literature讨论删除单个 key ,但不能一次删除多个 key 。 是否可以使用geoFire.remove()一次删除多个 key ? 如果是,此操作的正确语
我已经尝试了好几个星期才让它发挥作用。文档看了很多遍,网上好像没有这方面的例子。 目标:我想要做的就是将当前用户位置 10 公里半径范围内的所有帖子打印到控制台。 问题:我不太明白需要将哪些参数放入用
我想制作一个应用程序,当用户进入某个区域时发送通知。我知道存在 Geofire,我想使用,因为我使用的是 Firebase 数据库,但我从未使用过它,而且我不知道它是否具有与 Google Geofe
我正在尝试将所有用户添加到距离用户位置一定距离内的列表中。我已成功获取用户当前位置,并使用 geofire 将其存储在我的数据库中。我知道我必须使用 geofire 来查询结果,但我不确定如何将用户添
我正在制作一个出租车应用程序,我使用 Geofire 和 Geoquery 找到最近的司机。 现在我有 3 种类型的汽车“3 座、4 座和 7 座”,用户可以在它们之间切换,我想更改查询以从正确的引用
如何使用 Geo Queries 获取靠近传递的 GeoLocation(double lat, double lng) 的所有位置.我有以下代码(它什么也没发生): public void setC
我对使用 Firebase 及其位置库 GeoFire 还很陌生。目前,我在构建数据时遇到了一些问题。 目前我的数据库是这样的: users facebook:xxxxx displayN
我在 geofire-js 上遇到了一些问题. 我的应用程序中有两种不同类型的用户。用户和 worker 。基本上,用户发布的职位和工作人员都可以看到这些职位。但我只想向与当前用户关系密切的工作人员显
我很难理解 GeoFire 如何查询附近的位置; 我正在构建一个基于地理的应用程序,它将根据用户位置获取附近的位置。我的数据结构如下 locations -Ke1uhoT3gpHR_VsehI
我通过 GeoFire 将位置数据存储在我的数据库中,结构如下: geofire -Ke1uhoT3gpHR_VsehIv -Kdrel2Z_xWI280XNfGg -g: "dr5r
我有一个应用程序,可以通过 Geofire 的纬度/经度坐标获取存储在我的 Firebase 中的用户周围的附近位置。 我现在希望能够在用户滚动到位置列表底部时获取更多位置(也称为无限滚动)。 为此,
我正在使用 GeoFire 搜索给定半径,用户可以在我的应用中设置该半径并将其存储在 FireBase 上。页面加载时,在运行 GeoFire 查询之前,我将从 Firebase 获取半径。但是,当我
我使用 Firebase 位置模块 Geofire 来搜索查询我附近的一些位置。该查询填充一个数组,然后该数组应显示在表上(通过表重新加载)。不幸的是,当 TableView 重新加载时,数组尚未加载
我有以下函数,它使用 Geofire 然后在嵌套设置中使用 Firebase 查询来获取用户列表。 我首先执行 Geofire 查询来获取 key,然后执行 Firebase 查询并创建与 key 匹
我在 Swift 应用中使用 Firebase 和 GeoFire 3.0 Cocoapod,用世界各地的标记填充 map 。以下是执行圆形查询以获取 map 上当前显示区域内的标记的代码:
我正在制作一个拼车安卓应用程序并使用 firebase 和 geofire。当我按下“Find Sameway Rides”按钮时,它会显示我附近 700 米半径内的用户。但是当没有用户时,它会在我的
在我的应用程序中,我使用 GeoFire 来查询用户周围的用户位置。这是一个类似 Tinder 的应用程序,带有卡片等...我使用 KolodaView 来制作卡片。 查询函数: func query
我正在使用 Firebase 实时数据库制作一个项目。 我必须发布带有时间戳、纬度和经度的图片,并从我的位置搜索 radio 中的图片,按时间戳排序,并使用从现在起 1 天后的时间戳值。 Fireba
我是一名优秀的程序员,十分优秀!