如何以编程方式选择 MKUserLocation?

发布于 2024-12-26 05:50:09 字数 379 浏览 1 评论 0原文

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

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

Titles and subtitles can be added to the user location that iOS shows using MKUserLocation. When the user taps on the location, these will show in a bubble above the location. The thought bubbles for other annotations can be shown by selecting the annotation with setSelected:animated: from MKAnnotationView. Unfortunately, MKUserLocation does not descend from MKAnnotationView.

How can I programmatically select the user location so the annotation appears over the user location without the user first tapping on it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小清晰的声音 2025-01-02 05:50:09

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;
        }
    }
}

The documentation for MKAnnotationView says this about its setSelected:animated: method (and something similar for its selected property):

You should not call this method directly.

Instead, use the MKMapView method selectAnnotation:animated:. If you call it in the didAddAnnotationViews delegate method, you can be sure the annotation view is ready to show the callout otherwise calling selectAnnotation will do nothing.

For example:

-(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;
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文