【问题标题】:Querying Firebase for Location Range查询 Firebase 的位置范围
【发布时间】:2018-10-29 16:27:42
【问题描述】:

我有一个中型 Firebase 数据库,其中包含大约 30,000 个位置对象,每个位置对象都包含名称、小时数以及最重要的纬度/经度等字段。在相应的移动应用程序(iOS 和 Android)上,我每次打开应用程序时都会加载用户的纬度和经度。然后,我希望能够加载用户指定的纬度和经度距离内的所有位置。

这不是如何计算球面上的点之间的范围的问题,而是更多关于 no-sql 数据库中“WHERE”等价物的问题。如何快速检查数据库中的所有 30,000 个位置,以查看两个字段是否在用户指定的(圆形)范围内?

【问题讨论】:

    标签: java android ios swift firebase


    【解决方案1】:

    也许你正在寻找startAt()endAt()equalTo()

    这样你可以过滤你的数据

    databaseRerefence.orderByChild(valueToOrderBy).startAt(valueStart).endAt(valueEnd);
    

    【讨论】:

    • 谢谢!在做了一些阅读之后,您似乎只能订购一个孩子,在我的情况下是纬度或经度。除了接收纬度范围内所有点的列表然后在客户端进行经度检查之外,是否有任何直观的解决方法?
    • 嗯,您是对的,显然您只能按一个孩子订购,我原以为您可以先添加更多排序,但不。我会四处看看,看看能不能找到一个巧妙的方法!
    • @AlexKimpel 似乎最好的解决方案之一是创建一个joinedkey。就像你的数据库中的 latLng 是 lat_long 值的连接,然后你可以按这个值排序,但是我看到这个问题,因为你说你已经有一个相当大的数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多