2013-06-02 52 views
1

我正在从API中加载位置的Map应用程序。我已经编制了代码,因此当用户翻转很长的距离时,会查询API在x公里内的位置,并且替换注释。延迟加载mapview注释的算法

我编码为iOS,但这将适用于任何地图应用程序。

一切正常,在这一点上,但我不满意我的算法了显著的距离是什么,以及要加载哪些半径的位置。我正在想的几件事 -

  • 地图视图是一个矩形,比它宽。 X公里范围内
  • 加载位置给你一个圆圈
  • 用户可以放大和缩小
  • 用户可以出锅N,S,E,W
  • 重新加载与考虑每一个微小的变化将使穷人用户体验 - 需要有一个门槛
  • 应该有视图外的位置,所以用户可以在重新加载之前进行一定程度的平移和缩放
  • 给定圆形内的矩形,用户平移向上或向下将达到圆圈的边缘比左右平移
  • 为了节约资源,而不是在缩小过宽的所有位置显示,因此放大可能会发现新的地点
  • 放大了,就会发现新的地点

任何建议什么样的算法,我应该做的事?我正在寻找以确定的位置处的以下变量 -

  • 半径重装点之前加载给定的屏幕宽度
  • 阈值改变(平移和缩放)的

回答

1

为栅格地图常见的解决办法是将图像切割成瓷砖并将其放在观察者所在的“附近”。您可以通过在平移/缩放后加载额外的点而不移除内容来为数据执行此操作。如果用于检索新点的代码在后台线程中运行,用户将不会注意到,并且对于每个平移点,它们总是会在已有数据的位置结束,并且在他们查看该点时加载更多数据为他们的下一个锅。你需要弄清楚他们可以走多远。经度很容易,只需要纵向差异(即左右),这就是他们拖动手指和地图的距离。因此,如果您的地图视图宽度为1度,那么您应该已经拥有一度到地图右侧的数据以及左侧一度的数据。纬度越难越好,因为它随着你离开赤道而变化。从上到下,如果你正在寻找苏格兰,则会有不同的测量。原则是相同的。计算用户能够拖动多长时间并拖动数据。如果你想像一个3x3网格,就像电话一样。地图视图位于5按钮处,您需要预先加载所有环绕按钮。 mapview被拖到一边,所以现在看着你需要在另外的正方形中加载的正方形,而不会丢失屏幕上的数据。您可以向右上,右上,右上和右下三个呼叫。或者打一个电话,并在一次通话中获得所有新数据。

当然,如果您的电话获取新数据有点慢,用户可能会收到答案之前平移两次,也许你需要获取更大的区域。所以你会在5x5网格的中心,当视图移向边缘时,你必须获取另一行或一列。

我希望有帮助。