我在SQLite数据库中存储了一些纬度和经度,如屏幕截图所示。
数据库名称:database
表名:table
表格中的字段:
* Name
* Score
我正在开发一个iPhone应用程序。在那里,如果我提供latitude
,longitude
和range
(距离)作为输入,我应该得到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中解决这个问题?提前谢谢。
答案 0 :(得分:1)
我可以看到两种不同的方法来解决你的问题。
使用一些数学方法制作非常复杂的SQL请求。 SELECT FROM WHERE(x-center_x)^ 2 +(y-center_y)^ 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”。您可能还需要调整用于获取里程而不是公里的数字。