试图确定按下按钮是否可以在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并正在处理坐标,但它只是没有丢弃带有标题的引脚。目前我的代码没有错误。如果您需要查看其他代码,请告诉我。万分感谢。
答案 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中。您可能还需要重新输入地图。