これを行うプロセスは十分に文書化されていますが、私はこの問題を解決できません。
私がやりたいことは、注釈を作成したばかりの座標を取得し、マップを拡大して中心に置くことだけです。私はいくつかの変更を加えてこのチュートリアルに従いました: 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 を明示的に呼び出していることは明らかです。
ヘルプ?