0
我想,這將是一個愚蠢的事情,但我不知道如何解決它。不調用的MKMapView委託(MapView類:ViewForAnnotation)
首先,我不得不說我的麻煩是因爲有時候工作。
我有一個主控制器,其某些類別,然後觸摸按鈕就可以打開其他視圖控制器,在該視圖控制器有其中包含與註釋一個的MKMapView自定義視圖。
我的問題是,在某些類別將其部署註釋和其他的人也沒有。
當它沒有,你可以檢查註解是的MKMapView內,但沒有叫MapView類:直到你和地圖進行互動另一個時間ViewForAnnotation。
我將展示一些代碼:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
CGRect mapFrame = CGRectMake(0, 0, frame.size.width, frame.size.height);
mapViewDefault = [[MKMapView alloc] initWithFrame:mapFrame];
mapViewDefault.delegate = self;
NSLog(@"Eres delegado!");
CLLocationCoordinate2D initialLocationCoordinate = [DataManager dataManager].centerCoordinate;
[mapViewDefault setCenterCoordinate:initialLocationCoordinate];
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(initialLocationCoordinate, 3000, 3000);
[mapViewDefault setRegion:viewRegion];
[mapViewDefault setUserInteractionEnabled:NO];
[mapViewDefault setScrollEnabled:NO];
[mapViewDefault setZoomEnabled:NO];
if(TAPIsiOS7()){
[mapViewDefault setRotateEnabled:NO];
}
[self addSubview:mapViewDefault];
}
return self;
}
- (void)addListOfPointsWithNumber:(NSArray*)arrayPoints {
NSLog(@"Añadimos anotación al array anotaciones");
[mapViewDefault removeAnnotations:mapViewDefault.annotations];
for (Place *place in arrayPoints) {
if(![place.coordinate isEqualToString:@"0 0"]){
Annotation *annotation = [[Annotation alloc] init];
annotation.coordinate = place.lCoordinate;
annotation.number = place.number;
annotation.place = place;
[mapViewDefault addAnnotation:annotation];
}
}
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if([annotation isKindOfClass:[Annotation class]]){
NSLog(@"Añadimos anotación al mapa");
Annotation *annotationMap = (Annotation *)annotation;
NSString *identifier = @"Pin";
UIImage *pinImage = [UIImage imageNamed:@"Pin.png"];
MKAnnotationView *pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
pinView.frame = CGRectMake(0, 0, pinImage.size.width, pinImage.size.height);
if (annotationMap.number>0) {
pinImage = [self imageWithView:pinImage andNumber:annotationMap.number];
}
pinView.image = pinImage;
pinView.annotation = annotationMap;
return pinView;
}
}
而且3張圖片:
我敢肯定,此代碼的偉大工程(因爲我可以看到,在其他類別),它必須是執行時間的東西。
如果有人對發生了什麼有一個想法,它應該很好。
謝謝大家!
在後臺線程中調用addListOfPointsWithNumber嗎?如果是這樣,請嘗試添加主線程。請參閱http://stackoverflow.com/questions/16537949/how-to-add-annotations-to-mkmapview-asyncronously和http://stackoverflow.com/a/1995254/467105。 – Anna