Ios 如何以编程方式选择MKUserLocation?

Ios 如何以编程方式选择MKUserLocation?,ios,mkmapview,mkannotation,mkannotationview,Ios,Mkmapview,Mkannotation,Mkannotationview,可以将标题和副标题添加到iOS显示的用户位置。当用户点击该位置时,它们将显示在该位置上方的气泡中。通过从MKAnnotationView中选择带有setSelected:animated:的注释,可以显示其他注释的思想气泡。不幸的是,MKUserLocation不是从MKAnnotationView派生的 如何以编程方式选择用户位置,使注释显示在用户位置上,而不让用户先点击它?MKAnnotationView的文档介绍了它的setSelected:animated:方法(以及它的selected

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


如何以编程方式选择用户位置,使注释显示在用户位置上,而不让用户先点击它?

MKAnnotationView的文档介绍了它的
setSelected:animated:
方法(以及它的
selected
属性的类似内容):

您不应该直接调用此方法


相反,请使用
MKMapView
方法
selectAnnotation:animated:
。如果在
didAddAnnotationViews
delegate方法中调用它,则可以确保注释视图已准备好显示标注,否则调用
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;
        }
    }
}

谢谢,这很有效。顺便说一句,如果使用动画,关于奇怪结果的注释是正确的。在我的应用程序中,动画会导致用户位置重置为北极(大致)。在没有动画的情况下,一切按预期进行。