在MapKit中管理许多地标

时间:2012-10-27 08:07:17

标签: objective-c ios xcode mapkit mkplacemark

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

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

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

    哪种方法是使用注释数组的最快方法?删除每个注释并重新绘制它们会更快吗?

1 个答案:

答案 0 :(得分:0)

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