This question already has answers here:
SQlite Getting nearest locations (with latitude and longitude)
(7个答案)
2年前关闭。
我在Java中使用SQLite连接数据库,数据库中的用户将传递一些数据,SQLite将基于该数据返回5个结果的列表。
我无法找出使用两个变量来带回最接近的匹配结果的代码的方法
它自己的程序将使用经度和纬度在数据库中搜索5个最近的火车站,并命令它们离最近的地方最远。我的问题是,经纬度将通过Android应用程序动态输入。所以我不能对Long and Lat进行硬编码
这是我当前的代码
如您所见,为了测试其余的代码,我使用了通配符之类的选项来使它工作正常,但是这只给了我所有按字母顺序排列的所有火车站的完整列表,更像是53.4198,而离该火车站最近的火车站可能在53.4183。
请帮助
谢谢 :)
(7个答案)
2年前关闭。
我在Java中使用SQLite连接数据库,数据库中的用户将传递一些数据,SQLite将基于该数据返回5个结果的列表。
我无法找出使用两个变量来带回最接近的匹配结果的代码的方法
它自己的程序将使用经度和纬度在数据库中搜索5个最近的火车站,并命令它们离最近的地方最远。我的问题是,经纬度将通过Android应用程序动态输入。所以我不能对Long and 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;
谢谢 :)
关于java - 最接近的匹配值sqlite ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43730044/
10-13 06:34