0

试图弄清楚当按下按钮时是否有可能转到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 并正在处理坐标,但它只是没有删除带有标题的图钉。目前我的代码没有错误。如果您需要查看其他代码,请告诉我。太感谢了。

4

2 回答 2

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>你应该声明和合成三个属性:标题,如果你喜欢的话,当然还有坐标

另一个问题可能是您将MapView' 的视图添加为子视图。将此代码放入MapView并呈现MapView为视图控制器可能会更好

我也不明白您为什么要向 self.mapView 添加注释,然后在其上添加子视图.....

于 2012-09-16T15:04:38.653 回答
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 中。您可能还需要重新定位您的地图。

于 2012-09-16T20:44:08.533 回答