ios uiimage mapkit mkannotation mkannotationview

iOS MapKit ¿Cambiar el tipo de mapa mapview hace que la imagen de anotación cambie a pin?



uiimage mkannotation (3)

Cualquier sugerencia sobre lo que está mal con lo siguiente sería apreciada.

Estoy agregando una imagen personalizada a una anotación usando el siguiente código.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isMemberOfClass:[MKUserLocation class]]) { return nil; } if ([annotation isMemberOfClass:[SpectatorPin class]]) { SpectatorPin *sp = (SpectatorPin *)annotation; MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKPinAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; } view.image = [UIImage imageNamed:@"mylocation20x20.png"]; view.canShowCallout = YES; view.annotation=annotation; return view; } //Should not get here return nil; }

La imagen se muestra correctamente inicialmente.

Tengo un control de segmento que cambia el tipo de mapa (estándar, satélite, híbrido). Estándar es el predeterminado. Tan pronto como selecciono el satélite, la imagen cambia inmediatamente a un pin. El método mapView: viewforAnnotation no se vuelve a llamar.

Saludos,

Jim


Para una imagen personalizada, puede usar MKAnnotationView en lugar de MKPinAnnotationView.

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; }


Prueba esto:

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; }