按下按钮时在mapView上显示注释引脚

时间:2012-09-16 14:59:17

标签: ios xcode mkmapview mkannotation mkannotationview

试图确定按下按钮是否可以在mapView中转到某个经度和纬度并按下按钮。我复制了我的代码以获得之前工作的“newAnnotation”引脚,但现在意识到它可能无法在我的按钮代码中工作。这是我的按钮代码:

-(IBAction)buttonPressed 
{
CLLocationCoordinate2D location;
MKCoordinateSpan span;
location.latitude = (double) 44.4758;
    location.longitude = (double) -73.2125;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;


    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
    andCoordinate:location];
[self.mapView addAnnotation:newAnnotation];
[newAnnotation release];


themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil];
[self.view addSubview:themapView.view]; 
}

我知道按钮WORKS并且它实际上转到了mapView并正在处理坐标,但它只是没有丢弃带有标题的引脚。目前我的代码没有错误。如果您需要查看其他代码,请告诉我。万分感谢。

2 个答案:

答案 0 :(得分:1)

我认为您的问题是您正在向尚未显示的地图视图添加注释。您必须首先将地图视图视图添加为子视图然后添加注释。这是代码的样子:

-(IBAction)buttonPressed 
{
CLLocationCoordinate2D location;
MKCoordinateSpan span;
location.latitude = (double) 44.4758;
    location.longitude = (double) -73.2125;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;

MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
andCoordinate:location];
[self.mapView addAnnotation:newAnnotation];
[newAnnotation release];


themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil];
[self.view addSubview:themapView.view]; 

}

更新:

我们可以看到MapViewAnnotation的代码吗?它应该是一个NSObject类,它采用MKAnnotation这样的<MKAnnotation>,您应该声明并合成三个属性:title,subtitle如果你喜欢,当然还有坐标

另一个问题可能是您将MapView的视图添加为子视图。将此代码放在MapView中并将MapView作为视图控制器

放置可能会更好

我也不明白你为什么要在self.mapView中添加一个注释然后在它上面添加一个子视图......

答案 1 :(得分:0)

您正在将注释添加到self.mapview,然后制作单独的地图并将其视图添加为子视图,这很奇怪。

如果您的self.mapview已经在屏幕上,那么您可以删除功能的最后两行。如果没有,那么您的功能可能需要更改为更像

-(IBAction)buttonPressed 
{
    CLLocationCoordinate2D location;
    MKCoordinateSpan span;
    location.latitude = (double) 44.4758;
    location.longitude = (double) -73.2125;
    span.latitudeDelta=0.2;
    span.longitudeDelta=0.2;


    themapView = [[MapView alloc] initWithNibName:@"MapView" bundle:nil];
    [self.view addSubview:themapView]; 

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"BCA" 
andCoordinate:location];
    [themapView addAnnotation:newAnnotation];
    [newAnnotation release];

}

重要的变化是您要将注释添加到刚刚初始化的mapView中,并且您要将mapView(而非.view)添加到当前.view中。您可能还需要重新输入地图。