SQLite - 从表中检索lat的集合

时间:2012-02-20 10:15:35

标签: iphone objective-c ios database sqlite

我在SQLite数据库中存储了一些纬度和经度,如屏幕截图所示。

enter image description here

数据库名称:database

表名:table

表格中的字段:

* Name

* Score

我正在开发一个iPhone应用程序。在那里,如果我提供latitudelongituderange(距离)作为输入,我应该得到latitudes&作为结果,来自数据库的longitudes给定range。例如,

如果我将输入参数设为

Latitude -> 40.7000, Longitude -> -73.9500 and Range -> 30 miles,它应检查数据库中给定Latitude & Longitude中的range并返回result。 因此,result应为

40.752199, -73.996696
40.793019, -73.969574
40.750898, -73.86898
40.675431, -73.954811
40.68194, -73.927689

我怎么能在iPhone中解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:1)

我可以看到两种不同的方法来解决你的问题。

  1. 使用一些数学方法制作非常复杂的SQL请求。 SELECT FROM WHERE(x-center_x)^ 2 +(y-center_y)^ 2<半径^ 2(不要原谅你的半径不是英里,而是毕业。)

  2. 读取来自DB的所有坐标,纬度为rande r-30英里< center_x< r + 30英里。并且减少所有不符合要求的coords ......在那里你可以使用CoreLocation Framework。 “[location1 getDistanceFrom:location2]”

答案 1 :(得分:1)

您正在寻找的是所谓的Haversine功能。这个页面有一个很好的SQLite功能,运行良好,速度很快。

http://www.thismuchiknow.co.uk/?p=71

如果那个不适合你,请搜索Haversine,你会找到一个。

您需要在SQL中添加“WHERE距离< 30”。您可能还需要调整用于获取里程而不是公里的数字。