2011-01-17 4 views
0

Хорошо, у меня есть несколько контактов на картеите. Эти штыри показывают разные типы аттракционов. (Например, парки, фермы и т. Д.)Пользовательская аннотация, не отображающая всех

Я хочу добавить пользовательские изображения для этих различных типов контактов. Парки имеют изображение парка и наоборот.

Однако, когда я добавил, не все изображения успешно отображаются. Например, в парках он должен иметь 5 контактов, но изображение получилось только в двух контактах, в то время как другие 3 - по умолчанию.

Но если я использовал цвета, чтобы их отличить. Например, [pinsetPinColor:MKPinAnnotationColorGreen];

Это работает! Кто-нибудь знает, в чем проблема?

Соответствующие коды ниже. Скажи мне, если тебе нужно больше. благодаря!

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ 
if ([annotation isKindOfClass:MKUserLocation.class]) { 
    //user location view is being requested, 
    //return nil so it uses the default which is a blue dot... 
    return nil; 
} 

//NSLog(@"View for Annotation is called"); 
MKPinAnnotationView *pin=[[MKPinAnnotationView alloc] 
          initWithAnnotation:annotation reuseIdentifier:nil]; 

pin.userInteractionEnabled=TRUE; 

MapEvent* event = (MapEvent*)annotation;  
NSLog(@"thetype: %@", event.thetype); 


if ([event.thetype isEqualToString:@"adv"]) { 
    //[pin setPinColor:MKPinAnnotationColorGreen]; 
    pin.image = [UIImage imageNamed:@"padv.png"]; 
} 

else if ([event.thetype isEqualToString:@"muse"]){ 
    //[pin setPinColor:MKPinAnnotationColorPurple]; 
    pin.image = [UIImage imageNamed:@"pmuse.png"]; 
} 

else if ([event.thetype isEqualToString:@"nightlife"]){ 
    pin.image = [UIImage imageNamed:@"pnight.png"]; 

} 
else if ([event.thetype isEqualToString:@"parks"]){ 
    pin.image = [UIImage imageNamed:@"ppark.png"]; 

} 
else if ([event.thetype isEqualToString:@"farms"]){ 
    pin.image = [UIImage imageNamed:@"pfarm.png"]; 

} 

else { 
    [pin setPinColor:MKPinAnnotationColorRed]; 

} 

pin.canShowCallout = YES; 
pin.animatesDrop = YES; 

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[rightButton addTarget:self action:@selector(clickAnnotation:) forControlEvents:UIControlEventTouchUpInside]; 
[rightButton setTitle:event.uniqueID forState:UIControlStateNormal]; 

pin.rightCalloutAccessoryView = rightButton; 

return pin; 

}

ответ

0

Эй, ребята, я узнал, в чем проблема. Когда я установил

region.span.longitudeDelta = 0.01f; 
region.span.latitudeDelta = 0.01f; 

вместо 0.2f. Фактически это позволяет правильно отображать все изображения контактов. Я думаю, что это имеет какое-то отношение к перекрывающимся изображениям или чему-то еще. Не слишком уверен. :/

Надеюсь, это поможет любому, у кого есть такая же проблема!

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