Pregunta

Este es mi -mapView:viewForAnnotation Método que deja caer pines cuando creo vistas de anotación. Pero cuando me puse mapView.showsUserLocation = YES; en -viewDidLoad, obtengo un pin caído en el bucle infinito (esperado - en simulador) y no el punto azul normal.

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
     MKAnnotationView *anno = nil;
     //create a pin annotation view
MKPinAnnotationView  *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];

    [pin setPinColor:MKPinAnnotationColorRed];
    pin.animatesDrop=YES;
    pin.canShowCallout = YES;
    pin.calloutOffset = CGPointMake(-5, 5);
    anno = pin;
    return anno;
}

¿Cómo puedo hacer que suelte los pasadores y mostrar el punto azul también?

Gracias

¿Fue útil?

Solución

Realmente simple de arreglar, aunque no está seguro si esta es la forma correcta de hacerlo ...

if (annotation == mapView.userLocation){
    return nil; //default to blue dot
}

Otros consejos

Similar a la otra respuesta, aquí hay algo cercano:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{
    NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)];
    if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0)
        return nil;
    ...
}

Por supuesto, use algo como esto bajo su propio riesgo. Podría dejar de funcionar mañana si Apple decidiera cambiar ese nombre.

A menudo usa su propia clase de anotación para buscar información relacionada con la anotación. En ese caso, para manejar solo sus propias anotaciones, use algo como

if ([annotation isKindOfClass:[MapLocation class]]) {}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top