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进行硬编码

这是我当前的代码

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