使用Geofire在一个查询中按位置和其他描述符设置和查询节点

时间:2019-11-16 22:02:30

标签: swift firebase geofire geohashing

背景

使用geofire,我可以像这样在我的firebaase实时数据库的节点中插入geohash位置。

let geofireRef = Database.database().reference().child('/users/core'
let geoFire = GeoFire(firebaseRef: geofireRef)

geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), forKey: "7")

看起来我也可以使用以下命令查询节点以接收指定距离内的所有节点

let center = CLLocation(latitude: 37.7832889, longitude: -122.4056973)
var circleQuery = geoFire.queryAtLocation(center, withRadius: 0.6)

我的问题

我希望能够同时插入带有额外信息的位置数据。例如

geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), andOtherInfo: [anno: "https://myimagelocation.com/myimage, visible: true], forKey: "7")

并使用其他信息查询信息

var circleQuery = geoFire.queryAtLocation(center, withRadius: 0.6).queryOrdered(byChild: "visible").queryEqual(toValue: true)

数据库结构

这些是我数据库中节点的外观

enter image description here


如果无法使用Geofire做到这一点,我想使用另一种geohashing解决方案,该解决方案可让我按其geohash位置设置和查询节点。 I tried to implement my own geohashing, but could not figure out the querying correctly

0 个答案:

没有答案