fuz*_*oat 1 iphone cocoa-touch objective-c
我正在使用NSMutableArray符合MKAnnotation协议的对象.我的问题是随着时间的推移,新的对象被添加到数组中,任何人都可以告诉我在mapView上更新注释的首选方法是什么.在添加更新的阵列之前,我是否应该考虑删除所有引脚,或者我是否更好地标记/标记MKAnnotation对象中的现有引脚并仅添加新的(未标记的)引脚?
小智 6
删除所有引脚并添加整个阵列(包括新注释)将导致闪烁并且不必要地重新绘制未更改的引脚.
除非需要闪烁或由于某种原因需要完全刷新,否则最好只告诉地图视图添加新引脚.
使用新引脚更新主注释数组后,构造一个名为say的临时数组,newAnnots其中包含对主数组中新注释的引用,并传递newAnnots给地图视图的addAnnotations:方法.之后可以丢弃临时数组.
但是,您可以只检查主数组中的注释对象是否已存在于地图视图的annotations数组中,而不是使用标记来标识"新"注释.例如:
if (![mapView.annotations containsObject:annot_from_your_main_array]) {
[newAnnots addObject:annot_from_your_main_array];
}
Run Code Online (Sandbox Code Playgroud)
与地图视图的注解阵列相比,如果你的主数组中的注释对象是你给的地图视图在实际的注释只会工作addAnnotation:或addAnnotations:.此外,当您的主阵列"更新"时,它应该只添加新的注释,而不是从头开始重建整个数组.如果是这样,注释引用将与地图视图的数组中的注释引用不匹配.
如果要删除更新上的注释,则同样适用.删除的注释可以添加到临时"删除"列表中(通过检查数组中是否存在地图视图的数组中的注释)并传递给removeAnnotations:.
请注意,如果更新主数组中的现有注记坐标,只要数组中的注释对象实现该setCoordinate:方法,地图视图就会自动更新引脚的位置.
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |