android - 不存在这样的 acos 函数

标签 android sqlite math geometry trigonometry

我有一个问题。我想在 Android 应用程序中获取谷歌地图上最近的点。不同的点/坐标存储在 sqlite 数据库中。我必须从他们那里得到最近的 5 个。我正在使用的查询是:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 5;

但是我收到错误,即“没有这样的函数:acos存在”。 正确的解决方案是什么

最佳答案

默认情况下,SQLite 不支持任何三角函数,因此您无法在 SQL 查询中使用它们。

您可以获取坐标列表并在应用程序代码中对其进行处理,也可以尝试使用用户定义的函数在 SQLite 中公开 Java 的三角函数(请参阅 How can I create a user-defined function in SQLite? )。

关于android - 不存在这样的 acos 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14165073/

相关文章:

java - 当我在 firebase 中插入数据时,数据会无限时间提交,直到运行停止-android studio

java - 处理程序是抽象的,不能被实例化

java - 从android上传文件到服务器失败

java - 有没有办法在 Android 上使用 Android 提供的类,如果不在 Android 上则使用不同的类?

Android:日期时间字段中的字符串值?

sqlite - 在 UWP 应用程序中包含带有数据的 SQLite DB 文件

java - 使用多个子键重命名 firebase 中的键

java - Java错误: reached end of file while parsing (Not typical)

php - Tan() 函数返回错误值

c - 手动 Math.pow() 使用 float 失去精度