1

我想构建一个位置感知应用程序,它可以自动检测用户的位置并向他们展示一个地标数据库中最近地标的排序列表。该应用程序将构建在 iPhone 上。

基本问题是:

  1. 如何计算到附近地标的距离并按“最近”排序
  2. 在哪里执行计算 - 通过 Web 服务在外部服务器上 - 或通过 SQLite 数据库和/或核心位置在 iPhone 本身上执行计算

理想情况下,应用程序将使用“路由距离”而不是乌鸦距离(即更大的圆距离公式)来计算距离,这是更准确的方法。当然,随之而来的是成本——计算起来会慢得多。我想知道哪种方法最合适。

此外,在手机本身上执行计算(使用核心位置?)的优点是不需要与服务器交谈(更快),并且可以在没有互联网连接的情况下使用该应用程序。缺点在于难以使地标数据库与最新数据保持同步。

我想知道是否有实现诸如此类的位置感知应用程序的行业标准方法。如果没有,请提出问题的最佳解决方案。

4

2 回答 2

2

对于您的大多数问题,我会推荐一个两层解决方案。使用最快的解决方案进行粗略的决策,然后对热门问题使用精细的决策。例如,对于您是存储在设备上还是服务器上的问题,我建议根据用户的最后位置在设备上存储“本地化”的东西。也就是说,用户之前靠近的东西很可能会再次靠近,所以这些东西应该被同步下来。当用户离开一个区域时,该区域中的东西应该被移到最近最少使用的列表中并最终被清除。所以当你去一个新的位置时,它会慢一段时间,但随着时间的推移会加速。

关于排序,再一次,两层是最好的。首先按乌鸦排序。然后,如果路由很便宜(尽管可能不是),您可以通过路由对您的热门命中进行排序。如果用户只会看到 20 次点击,那么某些条目是 #80 还是 #100 并不重要。它太低而无法关心,所以它太低而无法计算。

一般来说,关于 iPhone 上的排序,我强烈建议速度胜过准确性。如果某些东西应该是 #1 而实际上是 #3,那几乎没有计算 20 秒而不是 5 秒那么重要。

于 2009-07-27T23:42:00.493 回答
0

解决方案取决于您要搜索的地理对象的数量。如果你有不到几千,你可以使用一个简单的方法。
如果您有 100.000 到数百万,则需要四叉树。
忘记数据库,那就是慢,除非它是一个空间数据库,恕我直言,iphone上没有。

于 2012-03-17T00:52:33.053 回答