mapViews标注中的计时器

时间:2012-05-18 14:09:52

标签: ios map timer callouts

我有多个引脚(2种引脚)的映射。我他们把计时器作为副标题(自从什么时候过去了多少时间)。问题是我不知道该怎么做。当然应该使用mapView将view放在viewController上。然后可能有一些观察者决定注释......但是在这个概念中,哪里可以删除观察者以及在哪里设置观察者的动作变化..?或者也许有更好的概念? 谢谢你的回复。

1 个答案:

答案 0 :(得分:0)

我会制作自己的MKAnnotation Class。

@interface MyAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D _coordinate;
    NSMutableString * title;
    NSMutableString * subtitle;
    ...
    UIImage * pinImage;
    ...
    NSDate * startTime;
}

此类将具有NSDate * startTime作为属性和refreshTime方法,它比较当前时间([NSDate date])并在字幕中显示已过去的时间。

然后你只需刷新你的地图注释

for(MyAnnotation * annotation in [mapView annotations]) {
    if([annotation isKindOfClass:[MyAnnotation class]]) // important cause the user centered blue point is part of your annotation list!
        [annotation refreshTime];
}

现在的问题是:你想什么时候刷新?

例如,您可以使用每n秒刷新一次的计时器,或者在ViewDidAppear上启动刷新...这取决于您想要做什么!

编辑:

如果要刷新注释选择,也许可以创建自己的MKAnnotationView的AnnotationView子类。

然后在您的AnnotationView中,覆盖touchesBegan:withEvent:touchesEnded:withEvent:以发送更新。

我没有测试,但我很确定它会起作用。