gpt4 book ai didi

ios - 延迟加载 map View 注释的算法

转载 作者:行者123 更新时间:2023-11-29 13:12:27 25 4
gpt4 key购买 nike

我正在开发一个从 API 加载位置的 map 应用程序。我已经制定了代码,因此当用户平移很远的距离时,将查询 API 以获取 x 公里内的位置,并替换注释。

我正在为 iOS 编写代码,但这适用于任何 map 应用。

此时一切正常,但我对我的算法不满意什么是重要距离,以及要加载的位置半径是多少。我正在考虑的一些事情-

  • map View 是一个矩形,高度大于宽度。
  • 加载 x 公里内的位置给你一个圆圈
  • 用户可以放大和缩小
  • 用户可以平移 N、S、E、W
  • 随着 View 的每一次微小变化而重新加载都会导致糟糕的用户体验 - 需要有一个阈值
  • 应该有 View 之外的位置,以便用户在重新加载之前可以平移和缩放到一定程度
  • 给定一个圆圈内的矩形,向上或向下平移的用户将比向右和向左平移时更早到达圆圈的边缘
  • 为了节约资源,当缩小范围过大时不会显示所有位置,因此放大可能会显示新位置
  • 缩小会显示新位置

关于我应该使用哪种算法有什么建议吗?我正在寻找确定以下变量-

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

最佳答案

栅格 map 的常见解决方案是将图像切割成图 block 并加载“靠近”查看者所在位置的图 block 。您可以通过在平移/缩放后加载其他点而不删除那里的内容来为您的数据执行此操作。如果您用于检索新点的代码在后台线程中运行,用户将不会注意到,并且每次平移时,他们总是会在一个已经有数据的地方结束,而当他们查看这些数据时,您会加载更多数据为他们的下一个平底锅。您需要计算出他们一次可以走多远。经度很简单,只需取经度差(即左右),这就是他们可以拖动手指和 map 的距离。因此,如果您的 map View 宽度为 1 度,您应该已经拥有 map 右侧 1 度和 map 左侧 1 度的数据。纬度更难,因为它会随着您远离赤道而变化。从上到下,如果您正在看苏格兰,则有不同的衡量标准。不过原理是一样的。算出用户可以在 1 次拖动中滚动多远并预加载该数据。如果您将 3x3 网格想象成电话簿。 map View 位于 5 按钮处,您需要预加载所有环绕按钮。 map View 被拖到一边,所以它现在正在查看您需要加载的 6 个方 block ,而不会丢失屏幕上的数据。您可以向右、上方和右侧、右上方和右下方发出三个调用。或进行一次调用并在一次调用中获取所有新数据。

当然,如果您获取新数据的调用速度有点慢,并且用户可能会在您收到答案之前平移两次,那么您可能需要获取更大的区域。因此,您将位于 5x5 网格的中心,当 View 移向边缘时,您必须获取另一行或另一列。

希望对您有所帮助。

关于ios - 延迟加载 map View 注释的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com