使用 Realm 过滤和排序附近的位置

Use Realm for filtering and sorting nearby locations

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

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

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

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

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

所以我担心你通过 Realm API 做这件事有点不走运,但你可以考虑研究像 GeoHash 这样的东西:https://en.wikipedia.org/wiki/Geohash。它是使用位串的位置表示,距离可以通过比较前缀来近似。

您可以做的是,在将数据存储在 Realm 中时,您可以存储一个名为 'Distance from user' 或类似名称的值。您可以通过计算用户之间的距离 lat、lon 和物体经纬度。

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

RealmGeoQueries 使在 iOS

上执行 findNearby 和 findInRegion 变得容易