我有以下Firebase数据库结构,
"-KSupX7CppMD1zbqIy0y" : {
"addedByUser" : "zQpb7o18VzYsSoTQtT9DNhOqTUn2",
"content" : "Post 1",
"cost" : "20",
"duration" : "Weekly",
"latitude" : "40.7594479995956",
"longitude" : "-73.9838934062393",
"timestamp" : "Fri 30 Sep"
},
"-KSuphuqO6a0lnrJYUkt" : {
"addedByUser" : "zQpb7o18VzYsSoTQtT9DNhOqTUn2",
"content" : "Post 2",
"cost" : "10",
"duration" : "Daily",
"latitude" : "40.7594329996462",
"longitude" : "-73.9846261181847",
"timestamp" : "Fri 30 Sep"
}
我需要在一定的距离参数(小于50米,100米,150米和200米)内过滤后,我可以从“经度”和“纬度”的坐标,但我很难过滤后。任何帮助将不胜感激。
非常感谢。Firebase & Swift的新手。
3条答案
按热度按时间3duebb1j1#
对于JSON,如下所示:
试试这个:-
这将给予你一个
autoID
键的所有用户,他们的纬度在30和60之间,你检索数据的顺序将是随机的,所以以升序遍历他们,你可以排序你收到的字典.cyej8jka2#
下面是一个你可以尝试的解决方案。这假设你已经把所有的帖子从Firebase下载到应用程序中,并存储在一个阵列中。你也可以考虑使用GeoFire,我个人没有使用过(但很想使用)。我相信它可以让你按位置查询Firebase,这样你就不必首先把所有的帖子下载到用户的设备上,然后在客户端进行过滤。
tquggr8v3#
使用GeoHash
这里是它的完整文档,您可以使用单个https://firebase.google.com/docs/firestore/solutions/geoqueries
将此添加到您的播客文件
pod 'GeoFire/Utils'
插入GeoHash
获取筛选器数据