Хорошо, так что я с этой проблемой. То, что я хочу сделать, это вручную добавить несколько аннотаций к карте. Когда я добавляю только одну аннотацию, она работает безупречно. Цоколевка капли, вы можете нажать на нее, чтобы увидеть его выноски, жизнь хороша.
Проблема возникает, когда я хочу, чтобы добавить больше, чем один. Когда я добавляю второй, вдруг PIN-кодов не окрашены правильно (то есть в зависимости от их величины, они должны быть определенным цветом, но теперь они оба же ...), и что более важно, когда вы нажимаете на них, чтобы увидеть их сноски, приложение падает с exex_bad_access. Я действительно понятия не имею, что это неправильно, может быть, я не хочу добавлять слишком много точек зрения на карту? Но это только 9 булавки и булавки сами добавлять только штраф. Вот мой код ...
- (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;
}
даже попытался удалить вторую функцию, но это ничего не делать.
Спасибо за помощь! PS Я должен также добавить, что есть, как правило, один или два контакта из 9, который работает при нажатии на аннотацию ...
Если я даже попытаться вручную только два аннотаций вручную в программе (то есть, удалить цикл), она по-прежнему не удается, и цвет по-прежнему не так ...













