使用 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 变得容易
我想查询附近位置的领域数据库。纬度和经度信息保存在数据库中。当我生成一个边界框时,我就可以查询边界框内的所有站点。我知道这不是半径,因为我使用的是边界框。
所以我有一个包含该地区所有地点的 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 变得容易