2010-08-20 67 views
4

为什么不能正常工作?自动显示MKAnnotation标注

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    if (TRACE_LOG) NSLog(@"%s", __FUNCTION__); 

    [mapView selectAnnotation:[views lastObject] animated:YES]; 

    return; 
} 

谢谢, Z @ K!

回答

7

因为您必须选择注释对象,而不是与其对应的视图。

我肯定100%没有,但我认为下面应该工作:

MKAnnotationView* annotationView = (MKAnnotationView*)[views lastObject]; 
[mapView selectAnnotation:annotationView.annotation animated:YES]; 

如果您保存您的注释的地方,可能会更好,让你直接从存储需要注释对象。请注意,只有当您尝试选择屏幕上当前可见的注释时,所有这些方法才会产生影响。

+0

你介意在那里抛出一个代码示例吗? – Zak 2010-08-20 14:11:34

+0

任何简单的方法来显示多个注释? – user1872384 2015-06-04 07:47:06

2

如果你只有一个注释,这是最简单的方法:

[mapView selectAnnotation:[mapView.annotations objectAtIndex:0] animated:true]; 

注意:如果你启用了针掉在地上的动画,这禁用它。基本上,它在添加到地图视图后立即选择注释,以便切断动画。

如果您想在选择之前等待引脚放置动画完成,请继续使用它。首先,确保你的视图控制器设置为MKMapViewDelegate,然后:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:.7 target:self selector:@selector(pinDropped) userInfo:nil repeats:NO]; 

} 

- (void) pinDropped { 
    [mapView selectAnnotation:[mapView.annotations objectAtIndex:0] animated:true]; 
}