mapView: didAddAnnotationViews: не отвечает - PullRequest
0 голосов
/ 09 марта 2011

В настоящее время я читаю Руководство по программированию iPhone для большого ботаника и столкнулся с некоторой проблемой на стр. 96.

Я правильно назначил MKMapViewDelegate (протестировано с несколькими делегатами), и каждый из них отвечает на внесенные изменения,Но во время этого делегата:

- (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:TRUE];
    NSLog(@"Test");
}

Консоль должна регистрировать это при добавлении аннотации.Но каким-то образом он не запускает описанный выше метод.

Это основной файл

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];

    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

    //[locationManager startUpdatingLocation];
    [mapView setShowsUserLocation:TRUE];

    [self.window makeKeyAndVisible];

    return YES;
}

Интересно, какая часть неправильная.Добавляет ли [mapView setShowUserLocation: TRUE] аннотацию к карте?Если да, почему нет ответа вышеописанным способом?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Это потому, что вы еще не добавили аннотацию! Синий индикатор, показывающий местоположение пользователя, не классифицируется как аннотация. Вы можете добавить аннотацию, просто поместив красную булавку на вид карты (коснитесь и удерживайте карту).

Если вы хотите создать свои собственные аннотации для вида карты программно, я предлагаю вам начать с изучения раздела «Аннотирование карты» в справочной документации класса MKMapView и просмотра Ссылка на протокол MKAnnotation (если вы не знакомы с протоколами, я настоятельно рекомендую вам ознакомиться с ними тоже!) Вы можете использовать экземпляр класса MKPinAnnotationView , соответствующий этому протоколу, Можно добавить аннотацию, используя метод экземпляра addAnnotation: класса MKMapView .

0 голосов
/ 09 марта 2011
...