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

时间:2016-02-23 19:38:22

标签: android location realm

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

所以我有一个/// <reference path="main/ambient/angular-toastr/angular-toastr.d.ts" /> ,其中包含该地区的所有地点。我希望将其保留为RealmResult,以便从自动更新对象中受益。

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

此外,如果我可以为距离添加额外的滤镜,那将是很好的,所以所有位置都在半径范围内。

3 个答案:

答案 0 :(得分:1)

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

所以我担心你通过Realm API做到这一点有点不幸,但你可能会考虑使用GeoHash:https://en.wikipedia.org/wiki/Geohash。它是使用位串的位置表示,距离可以近似比较前缀。

答案 1 :(得分:1)

RealmGeoQueries使在iOS上轻松执行findNearby和findInRegion

答案 2 :(得分:0)

您可以做的是,在将数据存储在Realm中时,您可以存储一个名为“与用户的距离”的值或类似的值。您可以通过计算用户lat,lon和对象之间的距离来获取此值拉特,lon。

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