2011-01-29 4 views
6

私はMKMapViewで遊んでいましたが、MKMapViewDelegateシステムの仕組みについて頭を下ろしています。これまでのところ、現在の位置マーカーが追加されたときにdidAddAnnotationViewsが呼び出されることに幸運はありません。didAddAnnotationViewsがMKMapViewで動作していません

MKMapViewDelegateを実装するアプリケーションデリゲートを設定しました。xibのMapViewへのアウトレットを持ち、アプリケーションデリゲートインスタンスのようにMapViewのデリゲートプロパティを自己に設定しました。私は、単純にNSLogを呼び出すアプリデリゲートにdidAddAnnotationViewsを実装しました。マップは現在の位置を表示するように設定され、起動時に青色のピン注釈が追加されますが、何らかの理由でdidAddAnnotationViewsがヒットしていません。

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views{ 
    NSLog(@"Annotation added!"); 
} 

私が逃したかもしれないアイデアはありますか?

答えて

3

mapView:didAddAnnotations:は、addAnnotation:またはaddAnnotations:に応答してのみ呼び出されます。ユーザーのロケーションピンは、このデリゲートメソッドをトリガーしません。

+1

ありがとうございましたか?私はこれが事実かどうか疑問に思ったが、私はiPhoneプログラミングに関するBig Nerd Ranchの書籍のWhereAmIチュートリアルに従っており、現在の場所を表す青い点が追加されたときにdidAddAnnotationViewsが呼び出されることを明確に述べている。実際には、didAddAnnotationsViewで使用するコードブロックを提供して、現在の地域を現在の場所をズームするように設定します。それは、著者の部分に大きな災難のように思える。 – BenBtg

+0

実際には、あるグーグルが、あなたが正しいとAppleがIOS 4.0の動作を変更したことを確認しました!どうやら、私は今didUpdateUserLocationを使用する必要があります。 – BenBtg

5

BNRで同じ問題が発生しました。ここに私が使用して終了するものである:

// Tell MKMapView to zoom to current location when found 
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    NSLog(@"didUpdateUserLocation just got called!"); 

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([userLocation coordinate], 250, 250); 
    [mapView setRegion:region animated:YES]; 
} 
0

はちょうど私が、これはあなたが mapView.delegate =自己を使用していることを確認し

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views 
{ 
    MKAnnotationView *annotationView = [views objectAtIndex:0]; 
    id <MKAnnotation> mp = [annotationView annotation]; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 250,250); 
    [mv setRegion:region animated:YES]; 
} 

を使用して動作させることができたことを確認したかったです。 または [mapView setDelegate:self];

関連する問題