Jump to content

Chinchetas de varios colores (MkAnnotationview)


Recommended Posts

Hola estoy creando en un map view varias chinchetas, hasta aquí correcto, tengo una de verde y otra de roja, con los respectivos títulos y subtítulos. Las creo a través de la función viewForAnnotation.

El problema viene cuando con otro botón muestro la posición del usuario. A mas de salir la redondilla azul que antes de hacer lo de los colores salía me sale una chincheta roja.

Lo que entiendo es que la redondilla azul es una chincheta profundamente modificada y al poner la función delegada de viewForAnnotation la transforma en normal. Hay alguna manera de crear la ?

 

cambiar de color las chinchetas:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
MKPinAnnotationView *test=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Patum"];
if([annotation title]==@"Patum")
{
       MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
       pinView.pinColor = MKPinAnnotationColorGreen;
       pinView.animatesDrop = YES;
       pinView.canShowCallout = YES; 
       return pinView; 
}
else if ([annotation title]!=@"Patum")
{
       [test setPinColor:MKMapTypeStandard]; 
       test.canShowCallout =  YES;
       test.animatesDrop = YES;
       
}
return test;
}

Cuando llamo a la ubicación del usuario:

-(IBAction)LaMevaPocicio:(id)sender{
   mapView.showsUserLocation = TRUE;

}

Link to post
Share on other sites

Solucionado:

if([annotation title]==@"Patum")

 

{

 

MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];

 

pinView.pinColor = MKPinAnnotationColorGreen;

 

pinView.animatesDrop = YES;

 

pinView.canShowCallout = YES;

 

 

 

 

 

return pinView;

 

}

 

else if ([annotation title]==title)

 

{

 

MKPinAnnotationView *test=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];

 

[test setPinColor:MKPinAnnotationColorRed];

 

test.canShowCallout = YES;

 

test.animatesDrop = YES;

 

return test;

 

 

 

}

 

return nil;

 

 

 

}

 

 

 

Retornar nil es la clave, y igualar el segundo if con title.

Edited by markfree
Link to post
Share on other sites

No voy a entrar en detalles de porque no deberías devolver nil, mi consejo es que crees un método de instancia con argumentos para devolver el pin como quieres, así podrás generar todos los que quieras sin tener que hacer esos arreglos que al final te traerán problemas o por defecto escribir muchas mas lineas de código.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.