在我的应用程序中,我需要绘制许多placemarks并不断更新其位置(或者如果它们变老(如果它们变为旧))。现在,我正在使用一些级联和顺序循环进行,我担心这不是最有效的方法。这就是我现在的工作方式:
- 对于每个placemark绘制的绘制,我首先在MapKit注释数组中搜索(由自定义的Mkplacemark制造,我在其中添加了创建日期和唯一的标识符),以绘制placemark的唯一ID。如果我找到placemark,我只会更新其位置,否则我在地图上添加了新注释。
- 对于MAPKIT注释数组中的每个placemark,我检查现在和创建日期之间的经过的时间是否大于10秒,如果是真的,则从地图上删除该注释。
我每2秒重复这两个回路。
问题是,当我管理20个或更多的标记或更多时,循环花费太多时间,更新示例过程无法正常工作。
哪种是使用注释数组的最快方法?它是否更快地删除了每个注释并重新绘制所有注释?
我解决了问题。我以正确的方式进行。唯一剩下的问题是地图更新期间屏幕的冻结。因此,我解决了在另一个线程上运行更新/删除进程的问题。这意味着,当您准备更新placemark或删除它时,您的背景线程需要调用主线程上的地图更新(必须在主线程上更新地图)。