IPhone - 经纬度和经度的SQLite距离

时间:2011-07-26 10:20:34

标签: iphone geolocation

我的应用程序中有一个嵌入式数据库,其中包含一些感兴趣点的纬度和经度,我需要知道距离这些点的距离(使用GPS获取我的位置)。 我的问题是:我刚刚发现SQLite无法使用我的查询计算距离,因为它不计算三角函数(SIN,COS ...)。我试图避免使用此查询以编程方式计算这些距离:

NSLog(@"SELECT ((ACOS(SIN(%@ * PI() / 180) * SIN(lat * PI() / 180) + COS(%@ * PI() / 180) * COS(lat * PI() / 180) * COS((%@ – lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance` FROM `members` HAVING `distance`<=’1000′ ORDER BY `distance`", Latitude,Latitude, Longitude);

有人有解决方案吗?

问候!

2 个答案:

答案 0 :(得分:9)

在目标C中进行。

这家伙有同样的问题:http://www.thismuchiknow.co.uk/?p=71

答案 1 :(得分:0)

是的,您可以根据位置周围的矩形进行简单查询,然后使用半正公式计算精确距离。

这样做的好处是可以在SQLite表上使用索引。

有关半胱氨酸公式的更多信息:http://en.wikipedia.org/wiki/Haversine_formula