Ok, deci am avut această problemă. Ceea ce vreau să fac este manual, adăugați mai multe adnotări la o hartă. Când adaug doar o adnotare, funcționează impecabil. Picăturile PIN, puteți face clic pe ea pentru a vedea înștiințărilor sale, viața este bună.
Problema vine atunci când vreau să adăugați mai mult de unul. Când am adăuga a doua, dintr-o dată PIN-ul nu sunt colorate în mod corect (de exemplu, în funcție de mărimea lor, acestea ar trebui să fie o anumită culoare, dar acestea sunt acum atât la fel ...), și mai important, atunci când faceți clic pe ele, pentru a vedea lor înștiințărilor, aplicația se blochează cu exex_bad_access. Eu chiar am nici o idee despre ce sa întâmplat, poate că eu sunt adăugarea de prea multe puncte de vedere pe hartă? Dar este numai 9 pini și pinii se adaugă foarte bine. Iată codul meu ...
- (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;
}
chiar a încercat eliminarea a doua funcție, dar nu a făcut nimic.
Multumesc pentru ajutor! PS Ar trebui, de asemenea, adăuga, există, de obicei, unul sau doi pini din cele 9 care funcționează atunci când faceți clic pe adnotarea ...
În cazul în care chiar și eu încerc să manual doar două adnotări de mână în program (de exemplu, elimina bucla), încă nu reușește, iar culoarea este încă greșită ...













