He configurado un NSMutableArray de objetos derivados de una clase que se ajusta al protocolo MKAnnotation. Tengo título de configuración configuración y de subtítulos para la anotación y los he agregado con éxito a la MKMapView usando:MKMapView, animateDrop?
[[self customMapView] addAnnotations:locationArray];
Lo que quiero hacer ahora es animar los pasadores de caer, en un principio pensé que podía hacer eso con Option1 Usando esto todo funciona, pero los pines no hacen una caída animada.
// Option1
// WORKS FOR: pinColor YES, animatesDrop NO, LABEL YES
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKPinAnnotationView *eachView in views) {
[eachView setAnimatesDrop:YES];
[eachView setPinColor:MKPinAnnotationColorPurple];
}
}
Mi siguiente conjetura era intentar Option2, esto parece funcionar muy bien, pero tengo dos problemas. El título y los subtítulos no aparecen, mi objeto de anotación personalizado se transfiere (puedo verlo en el depurador) pero la información contenida no está llegando al nuevo pin
. En segundo lugar, esto crea un nuevo conjunto de MKAnnotationViews, ¿qué pasa con los antiguos, están ahí y problemas con pérdidas de memoria?
// Option2
//FOR: pinColor YES, animatesDrop YES, LABEL NO
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
if (pin == nil) {
pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"] autorelease];
} else {
pin.annotation = annotation;
}
pin.pinColor = MKPinAnnotationColorRed;
pin.animatesDrop = YES;
return pin;
}
EDIT: He resuelto el título que falta & de subtítulos añadiendo pin.canShowCallout = YES;
En el código de la opción 2, cuando se crea el pasador no va a tener el conjunto de anotación. Eliminaría el "else" y doraría pin.annotation = línea de anotación, para que siempre se establezca. – theLastNightTrain