Итак, у меня возникла эта проблема. Я хочу, чтобы вручную добавить несколько аннотаций к карте. Когда я добавляю только одну аннотацию, она работает безупречно. Булавка падает, вы можете щелкнуть по ней, чтобы увидеть ее выноску, жизнь хорошая.Проблема добавления нескольких аннотаций для отображения
Проблема возникает, когда я хочу добавить более одного. Когда я добавляю второй, вдруг булавки не окрашены правильно (т. Е. В зависимости от их величины они должны быть определенного цвета, но теперь они одинаковы ...), и что еще более важно, когда вы нажимаете на них, чтобы увидеть их выноска, приложение вылетает с 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, который работает, когда вы нажимаете аннотацию ...
Если я даже попытаюсь вручную вручную вручную записать две аннотации вручную (то есть удалить петлю) , он все еще не работает и цвет по-прежнему ошибочен ...
Кроме того, я должен добавить, что, если добавить две аннотации к карте вручную, вещь происходит сбой таким же образом. автобус * BUS2 = [bus1 initWithStop: [останавливается objectAtIndex: 0]; MapAnnotation * eqAnn = [MapAnnotation annotationWithBus: BUS2]; [self.mapView addAnnotation: eqAnn]; Bus * BUS2 = [bUS1 initWithStop: [останавливается objectAtIndex: 1]; MapAnnotation * eqAnn = [Аннотации к базе данных аннуляцииWithBus: bus2]; [self.mapView addAnnotation: eqA пп]; Это все еще не удается. – kodai