J'ai besoin de créer une vue d'annotation ci-dessus sur MKMapView. Je suis capable de créer la vue d'annotation personnalisée mais sur le robinet de l'annotation, la vue doit être ouverte avec l'image avec ce gros texte, je ne peux pas créer celle-là. Veuillez me fournir des liens ou la façon de faire cette tâche.
Pour créer une vue d'annotation personnalisée (votre remplacement pour la broche standard), vous pouvez simplement définir la propriété image
de la MKAnnotationView
in la méthode viewForAnnotation
:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
return nil;
}
else if ([annotation isKindOfClass:[YourAnnotationClassHere class]]) // use whatever annotation class you used when creating the annotation
{
static NSString * const identifier = @"MyCustomAnnotation";
MKAnnotationView* annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView)
{
annotationView.annotation = annotation;
}
else
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:identifier];
}
annotationView.canShowCallout = NO; // set to YES if using customized rendition of standard callout; set to NO if creating your own callout from scratch
annotationView.image = [UIImage imageNamed:@"your-image-here.png"];
return annotationView;
}
return nil;
}
Vous pouvez également ajuster la propriété centerOffset
pour que la broche s'aligne exactement comme vous le souhaitez.
Concernant la personnalisation de la légende, l'approche la plus simple consiste à spécifier leftCalloutAccessoryView
, rightCalloutAccessoryView
et/ou detailCalloutAccessoryView
. Cela vous donne un degré de contrôle surprenant, en ajoutant toutes sortes d'images, d'étiquettes, etc.
Si vous souhaitez effectuer une refonte radicale de la légende, vous pouvez avoir viewForAnnotation
définir canShowCallout
sur NO
, puis répondre à setSelected
dans votre vue d'annotation personnalisée pour afficher votre propre légende. Dans Swift, voir Personnaliser la vue des légendes MKAnnotation? pour quelques options de personnalisation des légendes.