我已经实现了由辉煌的Dave Addey提供的算法,使用“球面律余弦法”公式计算两个坐标之间的距离(这是original link)。这就是我打算在查询中使用函数调用的方法:
NSString *SQLQuery= [NSString stringWithFormat: @"SELECT distance(lat, lon, '%f', '%f') as distance, * FROM table WHERE distance < %f", coord.latitude, coord.longitude, distance/1000.0];
问题是我可以正确地过滤半径为1km的结果,但是当我尝试访问列“距离”时它总是返回0.我使用FMDatabase,但是直接调用sqlite3({{1 }})无法解决问题。
以下是用于声明函数的代码(我尝试直接调用sqlite3):
[resultset doubleForColumnIndex: 0]
任何线索?
答案 0 :(得分:0)
SQL Query的构建方式有错误,应该是:
@"SELECT * FROM (SELECT distance(lat, lon, %f, %f) as distance, * FROM table) WHERE distance < %f ORDER BY distance DESC"
(有关详细信息,请参阅问题的评论)