Ok, quindi sto avendo questo problema. Quello che voglio fare è aggiungere manualmente più annotazioni a una mappa. Quando aggiungo solo un'annotazione, funziona perfettamente. Le gocce pin, è possibile fare clic su di esso per vedere il suo richiamo, la vita è buona.
Il problema nasce quando voglio aggiungere più di uno. Quando aggiungo il secondo, improvvisamente il perno di non sono colorati in modo corretto (cioè a seconda della loro grandezza che dovrebbe essere un certo colore, ma sono ora entrambi lo stesso ...), e ancora più importante quando si fa clic su di essi, per vedere i loro callout, l'applicazione si blocca con exex_bad_access. Io davvero ho idea di cosa c'è che non va, forse sto aggiungere troppe viste alla mappa? Ma è solo 9 perni ed i perni si aggiungono più che bene. Ecco il mio codice ...
- (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;
}
anche cercato di rimuovere la seconda funzione, ma non ha fatto nulla.
Grazie per l'aiuto! PS Vorrei anche aggiungere, di solito c'è uno o due perni dei 9 che funziona quando si fa clic l'annotazione ...
Se ho anche provare a manualmente solo due annotazioni a mano nel programma (ad esempio, rimuovere il loop), non riesce ancora ed il colore è ancora sbagliata ...













