0

これを行うプロセスは十分に文書化されていますが、私はこの問題を解決できません。

私がやりたいことは、注釈を作成したばかりの座標を取得し、マップを拡大して中心に置くことだけです。私はいくつかの変更を加えてこのチュートリアルに従いました: http://maybelost.com/2011/01/a-basic-mapview-and-annotation-tutorial/

MapViewAnnotation クラスは、タイトルと座標だけで構成されています。_detailItem は、名前、緯度、経度を文字列として保持する単純なオブジェクトです。

私は基本的な地図を持っています。ストーリーボードを使用しています(つまり、ARC)。座標があります。これが私のコードです:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];

    // Set some coordinates for our position
    CLLocationCoordinate2D location;
    double thisLat = [_detailItem.EventLat doubleValue];
    double thisLong = [_detailItem.EventLong doubleValue];

    location.latitude = (double)thisLat;
    location.longitude = (double)thisLong;

    // Add the annotation to our map view
    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:_detailItem.EventName andCoordinate:location];
    [self.map addAnnotation:newAnnotation];
}

// When a map annotation point is added, zoom to it
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id <MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 1000, 1000);
    [mv setRegion:region animated:YES];
    [mv selectAnnotation:mp animated:YES];
}

うん。これを行うと、注釈は期待どおりに表示されますが、マップは中央に表示されず、拡大もされません。デバッグ中に、didAddAnnotationViews がまったく呼び出されていないことがわかりました。それでも、addAnnotation を明示的に呼び出していることは明らかです。

ヘルプ?

4

1 に答える 1

1

didAddAnnotationViews全然呼ばれない

viewDidLoad実装で、次の行を追加します。

self.map.delegate = self;

それが物事を変えるかどうか見てください。

于 2013-05-21T00:39:07.583 に答える