GeoFire 查询数据列表
GeoFire Query on lists of data
我在 Firebase 实时数据库中的帖子数据结构如下:
posts:
key1:
author: Jake
location:
g: xxxx
0: yyyy
1: yyyy
key2:
author: Daniel
location:
g: xxxx
0: yyyy
1: yyyy
如何使用 GeoFire 查询我的数据库以仅查找我指定半径内的帖子?有没有办法更改数据库中的 .indexOn 规则来执行此操作?
提前致谢
我认为您需要将 GeoFire 与 UserDatabase 分开
要设置位置调用
geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), forKey: **UserID** )
然后创建圈子查询
let center = CLLocation(latitude: 37.7832889, longitude: -122.4056973)
var circleQuery = geoFire.queryAtLocation(center, withRadius: 0.6) // 600m
您对数据库进行调用
var queryHandle = query.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
print("Key '\(key)' entered the search area and is at location '\(location)'")
})
返回的每个密钥都将是您的数据库的用户 ID,您可以通过 /User/{UserID}/...访问相关路径
我在 Firebase 实时数据库中的帖子数据结构如下:
posts:
key1:
author: Jake
location:
g: xxxx
0: yyyy
1: yyyy
key2:
author: Daniel
location:
g: xxxx
0: yyyy
1: yyyy
如何使用 GeoFire 查询我的数据库以仅查找我指定半径内的帖子?有没有办法更改数据库中的 .indexOn 规则来执行此操作?
提前致谢
我认为您需要将 GeoFire 与 UserDatabase 分开
要设置位置调用
geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), forKey: **UserID** )
然后创建圈子查询
let center = CLLocation(latitude: 37.7832889, longitude: -122.4056973)
var circleQuery = geoFire.queryAtLocation(center, withRadius: 0.6) // 600m
您对数据库进行调用
var queryHandle = query.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
print("Key '\(key)' entered the search area and is at location '\(location)'")
})
返回的每个密钥都将是您的数据库的用户 ID,您可以通过 /User/{UserID}/...访问相关路径