我在 java 中使用 SQLite 连接到数据库,在数据库中用户将传递一些数据,SQLite 将基于此返回 5 个结果的列表。
我无法找出一种使用两个变量来恢复最接近匹配结果的代码方法
它自己的程序将使用经度和纬度在数据库中搜索 5 个最近的火车站,并将它们从最近到最远的地方排序,我的问题是经度和纬度将通过 android 应用程序动态输入。所以我不能硬编码 Long 和 Lat
这是我当前的代码
SELECT Latitude, Longitude, StationName FROM stations WHERE Latitude like '51%' AND Longitude like '-3%' LIMIT 5
正如您在测试其余代码时所看到的那样,我使用了通配符和类似选项来使我看起来可以正常工作,但是这只会给我按字母顺序排列的所有火车站的完整列表,现实的纬度是更像是 53.4198,离那个最近的火车站可能是 53.4183。
请帮助
您必须计算距离,然后按该距离排序。我认为这会对你有所帮助。
SELECT Latitude, Longitude, StationName,
(
3959 *
acos(cos(radians(UserLatitude)) *
cos(radians(Latitude)) *
cos(radians(Longitude) -
radians(UserLongitude)) +
sin(radians(UserLatitude)) *
sin(radians(Latitude )))
) AS distance
FROM stations
ORDER BY distance ASC LIMIT 0,5;
谢谢 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句