使用 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 加载地图时显示标题的主要内容,如果未能解决你的问题,请参考以下文章