使用 mkmap 加载地图时显示标题

Posted

技术标签:

【中文标题】使用 mkmap 加载地图时显示标题【英文标题】:Getting the title to show up when map loads with mkmap 【发布时间】:2010-11-11 03:17:15 【问题描述】:

我可以在我的 iphone 应用程序项目中获得要显示的地图和要放置的图钉,但我希望在视图加载时显示标题和副标题。这是我正在使用的代码。我以为投入 [mapView selectAnnotation:annotation Animation:YES];

会起作用,但不会。有谁知道怎么做?

谢谢

CLLocationCoordinate2D coord = 纬度:32.02008,经度:-108.479707;

    [self.view addSubview:mapView];


MapController *annotation = [[MapController alloc]  initWithCoordinate:coord];
annotation.currentPoint = [NSNumber numberWithInt:1];
annotation.mTitle = @"MyTitle";
annotation.mSubTitle = @"My Address";
[mapView selectAnnotation:annotation animated:YES];
[mapView addAnnotation:annotation];
[annotation release];

【问题讨论】:

【参考方案1】:

在添加到地图之前调用 selectAnnotation 将不起作用,甚至将其放在 addAnnotation 行之后也不起作用,因为尚未在地图上绘制注释视图。

您需要使用在注释准备好操作时调用的 didAddAnnotationViews 委托方法:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views

    id<MKAnnotation> myAnnotation = [mapView.annotations objectAtIndex:0];
    [mapView selectAnnotation:myAnnotation animated:YES];

这个例子只是假设你有一个注解并从 mapView 的注解数组中获取它。您还可以使用 ivar 保存对注释的引用。

确保您已设置 mapView 的委托属性,否则该方法将不会被调用。

【讨论】:

谢谢..我收到此错误“mapView 的本地声明隐藏实例变量”您知道这是指什么吗?再次,我真的很感谢你在这方面的帮助。 它并不会真正阻止它工作——它只是警告您可能存在名称冲突/混淆。您可以将方法中的 mapView 参数的名称更改为其他名称以使警告消失。 或者——可能更好的选择是将 mapView 类变量的名称从 mapView 更改为类似 myMapView 的名称,因为默认情况下所有地图视图的委托方法都使用“mapView”。 嗯..我按照你的建议改变了这个,错误消失了,但它仍然没有显示那个标题......也许我没有设置 myMapView 委托属性,但你能告诉我如何做到这一点? 首先做这个测试:在 didAddAnnotationViews 方法中,添加这个作为第一行:NSLog(@"in didAddAnnotationViews");。当您运行应用程序时,是否会出现注释图钉以及“in didAddAnnotationViews”是否出现在调试控制台中?

以上是关于使用 mkmap 加载地图时显示标题的主要内容,如果未能解决你的问题,请参考以下文章

Mkmap查看用户位置

谷歌地图在页面导航时显示部分地图

在地图视图上单击图钉时显示联系人姓名

每次更新时显示地图按值排序

在自动完成输入上写入时显示/隐藏按钮

使用 afnetworking 拉 json 时显示加载动画