【发布时间】:2011-10-05 04:26:08
【问题描述】:
我正在编写一个应用程序,它具有 ca。数据库中有 7000 家欧洲餐厅,我想向用户显示最近的餐厅列表,例如所有距离用户半径 5 公里的餐厅。
我可以在服务器上进行搜索,但它需要互联网。是否可以将数据保存在 iPhone 上并查询数据库?我在核心数据或 iPhone SQLite 中找不到类似的参考。
我真的需要用毕达哥拉斯之类的东西自己编程,并在每次查询时计算到每家餐厅的距离吗?还是有其他方法?
[更新] 我想在服务器上使用它(但要在 iPhone 上使用):SELECT * FROM restaurants WHERE ST_Distance_Sphere(geo, ST_GeomFromText(POINT(55.98767 57.12345), -1)) < 5000
我希望用户即使没有互联网连接也能找到餐厅,例如当您在国外时。
【问题讨论】:
-
您可以考虑 - 如果可能并根据数据集的质量 - 如果您有此信息,则使用纬度/经度计算距离,直到您的用户所在的位置。
-
是的,我就是这么想的。但是我不想在毕达哥拉斯计算的帮助下获得所有 7k 行并比较每一行,我想使用类似 SELECT * FROM restaurant WHERE ST_Distance_Sphere(geo, ST_GeomFromText(POINT(55.98767 57.12345), -1 ))
-
我实现此目的的一种方法是使用大约 5,000 个条目的数据集,但这些条目是二进制格式,因此不使用 Core Data / SQL。设备上计算纬度、经度和所有条目之间距离的处理时间不到 2 秒——可以做到——但遗憾的是,我无法在 SQL 方面提出建议,因为我没有在 iOS 中使用过这个。您还可以将位置拆分为大陆或纬度块,以协助完成此任务的计算方面。
-
嗯,好的,感谢您的 cmets 关于您的数据集上的时间,这非常有价值。
标签: iphone sqlite core-data spatial geo