У меня есть приложение, в котором я показываю небольшую карту с одной аннотацией, карта находится в созданном мной объектном объекте, этот экран обновляется всякий раз, когда устанавливается новый объект, также показывая новую карту.Карта как аннотация для объекта.
Всякий раз, когда я пытаюсь переместить вид, коснитесь булавки аннотации или масштабирования, карта на какое-то время зависает, и я понятия не имею, почему это происходит.Приложение только для iPad (iPad 2, iOS 4.3.5).Вот код, который устанавливает карту:
- (void) setObject:(AchmeaObject *)_object
{
if(kaart != nil)
{
[kaart removeFromSuperview];
kaart = nil;
}
kaart = [[MKMapView alloc] initWithFrame:CGRectMake(340, 380, 400,300)];
[kaart setDelegate: self];
[kaart setUserInteractionEnabled:YES];
CLLocationCoordinate2D coordinate;
coordinate.latitude = [_object.latitude doubleValue];
coordinate.longitude = [_object.longitude doubleValue];
double miles = 2;
double scalingFactor = ABS( cos(2 * M_PI * coordinate.latitude /360.0) );
MKCoordinateSpan span;
span.latitudeDelta = miles/69.0;
span.longitudeDelta = miles/(scalingFactor*69.0);
MKCoordinateRegion region;
region.span = span;
region.center = coordinate;
[kaart setRegion: region animated:YES];
ObjectAnnotation *sa = [[ObjectAnnotation alloc] initWithName: _object.plaats Address: _object.adres Coordinate:coordinate];
NSArray *anotations = [NSArray arrayWithObject: sa];
[kaart addAnnotations:anotations];
[self.view addSubview:kaart];
}
Я понятия не имею, почему это происходит, но когда он впервые показывает, требуется несколько секунд, чтобы ответить на любое взаимодействие с пользователем, и после каждого взаимодействия, в котором он нуждается, вхотя бы еще несколько секунд, пока несколько раз не замерзнут полностью.
ObjectAnnotation.m
#import "ObjectAnnotation.h"
@implementation ObjectAnnotation
@synthesize coordinate = _coordinate;
- (id) initWithName: (NSString *) _name Address: (NSString *) _address Coordinate: (CLLocationCoordinate2D) _coord{
self = [super init];
name = [_name retain];
address = [_address retain];
_coordinate = _coord;
return self;
}
- (NSString *)title {
return name;
}
- (NSString *)subtitle {
return address;
}
- (void)dealloc
{
[name release];
name = nil;
[address release];
address = nil;
[super dealloc];
}
@end