我在其中一个项目中使用Firebase,并且想知道使用Geofire是否可以实现以下目标。
我有一个带有半径的点列表(lat,lng,radius)。在附加的图像中,蓝色圆圈由点及其半径创建。
我想找到所有到达用户位置的圈子(红圈 - 只是一个点)。我想要实现的最终效果类似于看到你周围的所有无线网络 - 其中一些可能有更强的信号。
可以使用Geofire完成吗?如果是,我该如何处理查询?
答案 0 :(得分:1)
Firebase无法处理此类查询,因为您无法在orderBy中使用逻辑。我不确定geofire可以解决这个限制(从我浏览过的文档中不能),所以我们必须想出另一种方法。如果您知道其中一个圆圈的最大尺寸,我们可能会大致计算出要选择的圆圈。
(旁注,我假设你只想要在顶部半球的东西,如果你想要处理这两个东西,还有更多的数学,但我不会在这里详细介绍)
我将大致描述如何做到这一点,纬度/经度是非常棘手的,因为你靠近极点并且半径并不总是在赤道附近转向1 - 1,因为它向北更远。在大多数情况下,这个想法是可行的,但确定最小值/最大值的数学运算将会改变,也可能是循环的最后一步。
orderByChild('_latitude_longitude').startAt(minLatitude + '_' + minLatitude).endAt(maxLatitude + '_' + maxLongitutde)
(不要忘记确保这些都具有相同的精度)这是我能想到的唯一没有服务器端处理的方法。