0

在我的应用程序中,我需要绘制许多地标并不断更新它们的位置(或者如果它们变旧则删除它们)。现在我用一些级联和顺序循环来做这件事,我担心这不是最有效的方法。这是我到目前为止的工作方式:

  1. 对于要绘制的每个地标,我首先在 MapKit 注释数组(由我添加创建日期和唯一标识符的自定义 MKPlacemark 制作)中搜索要绘制的地标的唯一 ID。如果我找到地标,我只更新它的位置,否则我在地图上添加新的注释。
  2. 对于 MapKit 注释数组中的每个地标,我检查从现在到创建日期之间的经过时间是否大于 10 秒,如果是,我从地图中删除该注释。

我每 2 秒重复这 2 个循环。

问题是当我管理 20 个或更多地标时,循环会花费太多时间,并且更新删除过程无法按预期工作。

使用 annotations 数组最快的方法是什么?删除每个注释并重新绘制它们是否更快?

4

1 回答 1

0

我解决了这个问题。我以正确的方式做这件事。唯一剩下的问题是地图更新期间屏幕冻结。出于这个原因,我解决了在另一个线程上运行更新/删除进程的问题。这意味着当您准备更新或删除地标时,您的后台线程需要在主线程上调用地图更新(地图必须在主线程上更新)。

于 2012-12-16T20:44:07.987 回答