Mapkit,如何检测注释已加载

Posted

技术标签:

【中文标题】Mapkit,如何检测注释已加载【英文标题】:Mapkit, how to detect annotations have loaded 【发布时间】:2010-11-03 01:19:54 【问题描述】:

我希望在 pin 完成它的放置动画时弹出注释标注。目前我可以用以下方法模拟它:

- (void)showCallOut 
    [myMapView selectAnnotation:[myMapView.annotations objectAtIndex:0] animated:YES];

在我的viewDidLoad 中是创建注释的地方

    [myMapView addAnnotation:annotation];

问题在于,在那之后您根本无法标注[self showCallOut];,因为在运行时它会在MapKit“确认”注释删除之前做出响应。我需要创建一个延迟(希望避免这种情况)或找到正确的方法来检测注释何时到位,然后运行showCallOut 方法。

感谢您的帮助!

感谢下面的 aBitObvious 提供解决方案:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:1];

【问题讨论】:

【参考方案1】:

尝试使用 didAddAnnotationViews 委托方法:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views

    [self showCallOut];

确保您的地图视图的委托已设置。

编辑: 如果您无论如何都需要添加延迟,请改用此方法(例如延迟 1/2 秒):

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views

    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:0.5];

【讨论】:

这很好用!有什么快速的方法可以增加延迟吗?目前,随着图钉掉落,CallOut 会显示出来。 太好了,我设法得到它,但也许你的方法会比我的方法有所改进。我只是在学习这种语言(项目的第 3 天/使用 xcode/objective-c)。我会用我的方法编辑我的问题。

以上是关于Mapkit,如何检测注释已加载的主要内容,如果未能解决你的问题,请参考以下文章

放大和缩小时的Mapkit注释类型?

将MapKit注释连接到表视图

在 MapKit 中缩小和适合所有注释的最佳方法是啥

Swift MapKit - MapView 中不显示注释

MapKit 地图 - 注释未显示在模拟器上

如何以编程方式在 Mapkit 中选择特定注释 - Swift