Ok, tak jsem s tímto problémem. To, co chci udělat, je ručně přidat několik poznámek k mapě. Když přidám jen jednu poznámku, to funguje bezchybně. Kolíkové kapky, můžete kliknout na něj vidět jeho popisku, život je dobrý.
Problém nastává, když chci přidat více než jeden. Když jsem se přidat druhý, náhle pin to nejsou barevné správně (tedy v závislosti na jejich velikosti by měly být určité barvy, ale oni jsou teď oba stejné ...), a co je důležitější, když na ně kliknete, aby jejich Popisek, aplikace havaruje s exex_bad_access. Já opravdu nemám ponětí, co se děje, možná jsem přidáním příliš mnoho názorů na mapě? Ale je to jen 9 kolíků a kolíky sami přidat pohodě. Tady je můj kód ...
- (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;
}
dokonce pokusil vyjmutím druhou funkci, ale to nebylo nic dělat.
Děkuji za pomoc! PS Měl bych také dodat, tam je obvykle jeden nebo dva kolíky z 9, která funguje, když klepnete na poznámku ...
Pokud se i dokonce pokusit ručně jen dvě poznámky ručně do programu (tj odstranit smyčku), ale stále nedaří a barva je stále špatně ...













