Jee*_*ena 5 sqlite iphone core-data spatial geo
我正在写一个有大约的应用程序.数据库中有7000个欧洲餐馆,我想向用户显示最近的餐馆列表,例如所有这些餐馆都是半径5公里的用户.
我可以在服务器上进行搜索,但它需要上网.是否可以将数据保存在iPhone上并查询数据库?我找不到核心数据或iPhone中的类似内容的任何引用.
我是否真的需要用毕达哥拉斯和其他东西自己编程并计算每个查询到每家餐馆的距离?或者还有其他方式吗?
[更新]我想像在服务器上一样使用它(但是要在iPhone上执行): SELECT * FROM restaurants WHERE ST_Distance_Sphere(geo, ST_GeomFromText(POINT(55.98767 57.12345), -1)) < 5000
我希望用户能够找到一家餐馆,即使她没有互联网连接,例如当你在国外时.
阅读纬度和经度计算.纬度经度本身就是在球面上以弧线表示的距离.如果您有一个由纬度和经度表示的位置数据库,那么您可以执行提取以仅查找位于用户当前位置的东西两个纬度以及经度的几度的记录.
所以你最终会得到一个类似于(伪代码)的谓词:
latitude >= (currentLatitude-aFewMinutesOfArc)
AND
latitude <= (currentLatitude+aFewMinutesOfArc)
AND
longitude >= (currentLongitude-aFewMinutesOfArc)
AND
longitude >= (currentLongitude+aFewMinutesOfArc)
Run Code Online (Sandbox Code Playgroud)
...这将创建一个逻辑框,可以返回包含在框内的所有餐馆记录.然后,如果您需要计算确切的距离,您只需要对您拥有的7,000个记录中的少数记录进行计算.
我建议阅读位置服务,因为它提供了许多处理位置计算的工具.
至于是使用纯SQL还是核心数据,请查看以前关于该主题的答案.简而言之,如果您已经知道C SQL api并且您的数据很简单,大而且是静态的,那么SQL是一个不错的选择.如果您可以花时间学习核心数据并且数据复杂且动态,那么无论数据大小如何,核心数据都是更好的选择.
归档时间: |
|
查看次数: |
3339 次 |
最近记录: |