ios - 如何以编程方式选择 MKUserLocation?

标签 ios mkmapview mkannotation mkannotationview

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

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

最佳答案

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

You should not call this method directly.


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

关于ios - 如何以编程方式选择 MKUserLocation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824517/

相关文章:

objective-c - 如何在控制设备方向的同时控制设备状态栏的方向?

swift - 跳过选择,直接在 MapKit 标记中拖动

ios - 使用 MapKit 和 CoreLocation 时的 Xcode 警告

ios - MKMapView 获取自定义路线坐标之间的距离

ios - 检查哪个注释标注正在打开

ios - 使用 swift 2.1 迭代一个 JSON 命名的字典数组

ios - iOS 应用程序文件是否可以在应用程序仍在审核中时更新?

iphone - 点击 MapKit 注释时应用程序崩溃

ios - 使用 NSURLSessionDownloadTask 在 UITableView 中下载图像的堆分配激增

ios - 在 MapKit Swift 中禁用 Mylocation Marker Tap