如何以编程方式选择MKUserLocation?

时间:2012-01-11 18:19:24

标签: ios mkmapview mkannotation mkannotationview

可以使用MKUserLocation将标题和副标题添加到iOS显示的用户位置。当用户点击该位置时,这些将显示在该位置上方的气泡中。通过从MKAnnotationView中选择带有setSelected:animated:的注释,可以显示其他注释的思想气泡。不幸的是,MKUserLocation并不是来自MKAnnotationView。

如何以编程方式选择用户位置,以便注释显示在用户位置上而无需用户首先点击它?

1 个答案:

答案 0 :(得分:7)

MKAnnotationView的文档说明了setSelected:animated:方法(以及selected属性的相似内容):

  

您不应直接调用此方法。


相反,请使用MKMapView方法selectAnnotation:animated:。如果您在didAddAnnotationViews委托方法中调用它,则可以确保注释视图已准备好显示标注,否则调用selectAnnotation将无效。

例如:

-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for (MKAnnotationView *av in views)
    {
        if ([av.annotation isKindOfClass:[MKUserLocation class]])
        {
            [mapView selectAnnotation:av.annotation animated:NO];
            //Setting animated to YES for the user location 
            //gives strange results so setting it to NO.
            return;
        }
    }
}