2011-01-17 2 views
0

Okay, ich habe eine Reihe von Pins auf dem Mapkit. Diese Pins zeigen verschiedene Arten von Attraktionen. (ZB Parks, Bauernhöfe und usw.)Benutzerdefinierte Annotation zeigt nicht alle

Ich möchte benutzerdefinierte Bilder für diese verschiedenen Arten von Stift hinzufügen. Parks haben ein Parkbild und umgekehrt.

Wenn ich jedoch hinzugefügt habe, werden nicht alle Bilder erfolgreich angezeigt. Zum Beispiel in Parks, sollte es 5 Pins haben, aber das Bild kam nur in 2 Pins, während andere 3 in Standard roten Pins ist.

Aber wenn ich Farben verwendet, um sie zu unterscheiden. Zum Beispiel [pinsetPinColor:MKPinAnnotationColorGreen];

Es funktioniert! Weiß jemand, was das Problem ist?

Relevante Codes unten. Sag mir, wenn du mehr brauchst. Vielen Dank!

- (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; 

}

Antwort

0

Hey Leute, ich habe herausgefunden, was das Problem ist. Wenn ich die

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

anstelle von 0,2 f. Es gelingt tatsächlich, alle Pins Bilder richtig zu zeigen. Ich denke, es hat etwas mit den überlappenden Bildern oder etwas zu tun. Nicht so sicher. :/

Hofft, dies hilft jedem mit dem gleichen Problem!