我把带有经纬度的数据存储在我的 SQLite 数据库中,我想得到与我输入的参数最接近的位置(ex。我当前的位置-lat/lng 等)。
我知道这在 MySQL 中是可能的,而且我做了一些研究,认为 SQLite 需要一个定制的外部函数来实现半正矢公式(计算球面上的距离) ,但是我还没有发现任何用 Java 编写并且可以工作的东西。
另外,如果我想添加自定义函数,我需要 org.sqlite
。Jar (对于 org.sqlite.Function
) ,这会给应用程序增加不必要的大小。
另一方面,我需要 SQL 中的 Order by 函数,因为单独显示距离并不是什么大问题——我已经在自定义的 SimpleCursorAdapter 中做过了,但是我不能对数据进行排序,因为我的数据库中没有距离列。这意味着每次位置变化时都要更新数据库,这是对电池和性能的浪费。因此,如果有人有任何想法排序光标与数据库中没有列,我也会很感激!
我知道有很多安卓应用程序使用这个功能,但是谁能解释一下它的魔力吗。
顺便说一下,我发现了另一种选择: 在 SQLite 中基于 Radius 获取记录的查询?
它建议为 lat 和 lng 的 cos 和 sin 值创建4个新列,但是还有其他不那么冗余的方法吗?