Ok, dus ik heb dit probleem. Wat ik wil doen is het handmatig toevoegen van meerdere annotaties aan een kaart. Toen ik slechts een annotatie toe te voegen, het werkt feilloos. De pen druppels, kunt u klikken op het aan zijn callout te zien, het leven is goed.
Het probleem komt wanneer ik wil meer toe te voegen dan één. Toen ik de tweede toe te voegen, plotseling de pin's zijn niet goed gekleurd (dwz afhankelijk van hun omvang moeten ze een bepaalde kleur te zijn, maar ze zijn nu allebei hetzelfde ...), en nog belangrijker wanneer u klikt op hen, om hun te zien bijschrift, de app crasht met exex_bad_access. Ik heb echt geen idee wat er mis is, misschien ben ik het toevoegen van te veel uitzicht op de kaart? Maar het is slechts 9 pinnen en de pennen zelf toe prima. Hier is mijn code ...
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *stops = [[NSMutableArray alloc] init]; //Get list of all the stops available
Bus *bus1 = [[Bus alloc] init]; // Bus 1 holds the stops
stops = [bus1 returnStops];
for (NSString *stop in stops) //Go through each stop to add annotation to map
{
Bus *bus2 = [bus1 initWithStop:stop]; //Create an instance of bus with a given stop
MapAnnotation *eqAnn = [MapAnnotation annotationWithBus:bus2];
[self.mapView addAnnotation:eqAnn]; //Add the annotation to the map
//[eqAnn release];
//[bus2 release];
}
[self recenterMap];
[stops release];
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *view = nil;
if(annotation != mapView.userLocation) {
MapAnnotation *eqAnn = (MapAnnotation*)annotation;
view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@busLoc];
if(nil == view) {
view = [[[MKPinAnnotationView alloc] initWithAnnotation:eqAnn
reuseIdentifier:@busLoc] autorelease];
}
CGFloat magnituide = [eqAnn.bus.magnitude floatValue];
if(magnituide >= .80f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorRed];
} else if(magnituide >= .60f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorPurple];
} else
{
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorGreen];
}
[(MKPinAnnotationView *)view setAnimatesDrop:YES];
[view setCanShowCallout:YES];
}
return view;
}
zelfs geprobeerd het verwijderen van de tweede functie, maar het deed niets.
Bedankt voor de hulp! PS Ik moet ook toevoegen, is er meestal een of twee pennen van de 9 die werkt als je de aantekening op ...
Als ik zelfs proberen om handmatig slechts twee aantekeningen met de hand in het programma (dat wil zeggen, verwijder de lus), het nog niet lukt en de kleur is nog steeds fout ...













