我在Swift中构建一个应用程序,用户可以在街道上发布他们见证的事件的位置。每个事件的生命周期为45分钟,然后在该阈值之后不会出现在地图上。< / p>
我像这样构建了我的Json树(位置和事件共享相同的id - 这里没有表示):
firebaseapp {
locations {
g
l {
0: "latitude"
1: "longitude"
}
}
events {
timestamp: "UTC timestamp"
description: "my description"
user: "id of user"
}
users {
// User data
}
}
我查询与屏幕上显示的区域对应的所有位置,然后查询发生在45分钟前的事件。我是这样做的:
regionQuery = geoFire.queryWithRegion(mapView.region)
regionQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
// I query my events based on the key here
})
这个方法的问题在于,对于特定区域,我查询过去发生的事件的所有位置(可能是很多),然后我查询发生在45分钟以前发生的事件tradionnal Firebase查询。
我的问题是否有更好的解决方案,因为如果每次用户移动地图时,我都会很快超过带宽阈值,所有显示区域的位置都会被加载。
答案 0 :(得分:3)
将“近期位置”与“历史位置”分开:
recent_locations
g
l {
0: "latitude"
1: "longitude"
}
historic_locations
g
l {
0: "latitude"
1: "longitude"
}
现在,您可以针对最近的位置或历史位置运行地理查询。