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]; 
}

ボタンが機能し、実際に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クラスである必要があり、タイトル、必要に応じてサブタイトル、そしてもちろん調整の3つのプロパティを宣言して合成する必要がありますMKAnnotation<MKAnnotation>

MapViewもう1つの問題は、のビューをサブビューとして追加していることです。このコードを入れて、ViewControllerとしてMapView提示する方がよい場合がありますMapView

また、self.mapViewに注釈を追加し、その上にサブビューを追加する理由もわかりません。

于 2012-09-16T15:04:38.653 に答える
0

self.mapviewに注釈を追加してから、別のマップを作成し、そのビューをサブビューとして追加します。これは奇妙なことです。

self.mapviewがすでに画面に表示されている場合は、関数の最後の2行を削除できます。そうでない場合は、関数を次のように変更する必要があります

-(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に注釈を追加することと、現在の.viewに(.viewではなく)mapViewを追加することです。マップを再センタリングする必要がある場合もあります。

于 2012-09-16T20:44:08.533 に答える