【问题标题】:Use Realm for filtering and sorting nearby locations使用 Realm 过滤和排序附近的位置
【发布时间】:2016-02-23 19:38:22
【问题描述】:

我想查询附近位置的领域数据库。经纬度信息保存在数据库中。当我生成一个边界框时,我可以查询边界框内的所有站点。我知道它不是半径,因为我使用的是边界框。

所以我有一个RealmResult,其中包含该地区的所有位置。我想将其保留为 RealmResult 以从自动更新对象中受益。

如何按与当前位置的距离对位置进行排序?只有位置的位置和纬度是持久化和可排序的。

另外,如果我可以为距离添加一个额外的过滤器,那就太好了,所以所有位置都在半径范围内。

【问题讨论】:

    标签: android location realm


    【解决方案1】:

    Realm 目前不支持地理空间查询,但我们在此处跟踪它时遇到问题:https://github.com/realm/realm-java/issues/1772

    所以恐怕你通过 Realm API 来做这件事有点不走运,但你可能会考虑使用 GeoHash 之类的东西:https://en.wikipedia.org/wiki/Geohash。它是使用位串来表示位置,并且可以通过比较前缀来近似距离。

    【讨论】:

      【解决方案2】:

      RealmGeoQueries 让 iOS 上的 findNearby 和 findInRegion 变得容易

      【讨论】:

        【解决方案3】:

        您可以做的是,在 Realm 中存储数据时,您可以存储一个名为“与用户的距离”或类似的值。您可以通过计算用户纬度、经度和对象之间的距离来获得该值纬度,经度。

        然后您可以使用“与用户的距离”这个值以降序或升序对数据进行排序,这在 Realm 中非常容易。或者您可以使用 Realm 中的比较器 API 来获取与用户有特定距离的对象。

        【讨论】:

        • 如果用户移动到另一个位置怎么办?存储的距离是否有效?
        • 否 因为用户的位置会改变,所以与对象的距离也会改变,但是由于 Realm 易于更新,您可以简单地重新计算该特定字段,也许每次用户移动时都会更新结果一个具体的数额。?我遇到了同样的问题,一直找不到更好的解决方案。
        • 我有用户同样的问题,用户位置是可变的,数据库中有数千个条目你会建议一个替代解决方案吗?
        猜你喜欢
        • 1970-01-01
        • 2019-10-30
        • 2014-10-02
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 2020-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多