2012-05-31 3 views
0

Я реализую функциональность в своем приложении для iPad, чтобы показать карту с пользовательскими аннотациями. По какой-то причине, - (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id) метод аннотации вызывается через 1-2 секунды после загрузки карты, что, я думаю, много времени.Map view viewForAnnotation, вызванный после задержки

Проблема заключается в том, что если вы перейдете к другому виду из карты, прежде чем загрузили булавки, приложение столкнулось с плохим доступом. Поэтому я предполагаю, что эта 1-2-секундная задержка не должна существовать.

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

Пожалуйста, дайте мне знать, если у вас есть решение.

Код:

MAPVIEWCONTROLLER

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [self setTitle:self.pageTitle]; 

    [self.navigationController.navigationBar setTintColor:[UIColor lloydsNavBarTintColour]]; 
    [self.mapView setDelegate:self]; 

    MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
    region.center.latitude = 53.566414; 
    region.center.longitude = -0.922852; 
    region.span.longitudeDelta = 10.0f; 
    region.span.latitudeDelta = 10.0f; 
    [self.mapView setRegion:region animated:YES]; 


    ACNEfficiencyAnnotation *annotation = [[ACNEfficiencyAnnotation alloc]init]; 

    [annotation setCoordinate:CLLocationCoordinate2DMake(55.5783462524414,-4.39453077316284)]; 

    [self.mapView addAnnotation:annotation]; 
} 

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation 
{ 
    self.annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]; 

    return self.annotationView; 
} 

АННОТАЦИЯ РЕАЛИЗАЦИЯ:

@interface ACNEfficiencyAnnotation : NSObject <MKAnnotation> 
{ 

} 

@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle; 
@property (nonatomic, strong) ACNEfficiencyLocation *location; 

@end 


@implementation ACNEfficiencyAnnotation 

@synthesize coordinate; 
@synthesize title; 
@synthesize subtitle; 
@synthesize location; 

@end 

ответ

0

Вы должны использовать dequeueReusableAnnotationViewWithIdentifier подготовить аннотацию к методу делегата, а затем с помощью ViewController-х свойство, которое будет использоваться повторно.

Должно возникнуть проблема с управлением памятью на вашем диспетчере viewController, убедитесь, что вы освобождаете и устанавливаете отображение карты на нуль при отпускании контроллера вида и его разгрузке.

0

Вы устанавливаете свойство self.annotationView и создаете новый MKAnnotationView каждый раз, когда вызывается делегат. Создайте свойство в viewDidLoad и просто верните self.annotationView в методе делегата.

Смежные вопросы