MKMapView添加注释并在一段时间后删除它

时间:2015-08-21 08:31:23

标签: ios objective-c mkmapview mkpointannotation

我有一个MKMapView,我添加了一些注释。我想在添加一段时间之后逐个删除注释。我需要每个注释都有自己的生命周期。可能吗?我该怎么做?

2 个答案:

答案 0 :(得分:0)

您最好的选择是使用-(void)removeAnnotations:(NSArray *)annotations中的MKMapView

只需在某处保存注释,例如带有{date:annotationObject}的NSDictionary,并在想要删除时检索它。

例如:

//Call somewhere to delete after 2 seconds
[self performSelector:@selector(deleteAnnotation:) withObject:annotation afterDelay:2.f]

//this function will remove the annotation from your map
-(void) deleteAnnotation:(id) object{
    [self.map removeAnnotations:@[object]];
}

答案 1 :(得分:0)

MKMapView使用removeAnnotationremoveAnnotations方法删除已添加的注释。

如果您希望每个注释都有自己的生命周期:

  • 使用指示生命结束的方法创建AnnotationLifespanDelegate协议,该方法将注释作为参数(例如func dearAnnotationRIP(annotation : MKAnnotation))。

  • 使用lifespanlifeSpanDelegate属性以及startCountdown方法创建自定义MKAnnotation。

  • startCountdown方法只是启动一个间隔等于lifespan的计时器,并在委托上调用生命结束方法。

  • 在视图控制器中实现AnnotationLifespanDelegate方法,在创建注释对象时,请确保设置lifespandelegate并调用startCountdown方法将注释添加到地图视图后立即注释。

  • 在注释寿命结束方法中,从地图中删除注释。