2010-09-07 11 views
11

Je charge une annotation sur ma carte. L'annotation s'affiche sous forme de broche lorsque la carte est chargée.Comment afficher automatiquement le titre/sous-titre sur l'annotation cartographique (broche)

Cependant, le titre et le sous-titre n'apparaissent pas automatiquement sur la broche. Actuellement, l'utilisateur doit appuyer sur la broche avant l'affichage du titre.

Existe-t-il un moyen d'afficher automatiquement le titre sur la broche lorsque la carte est chargée?

(Cette question est à peu près la même chose, mais pas tout à fait: To display the title for the current loaction in map in iphone parce que je l'ai déjà les attributs -title et -subtitle définis dans mon objet.)

Merci

Répondre

16

La méthode à appeler est "selectAnnotation: animé" de MKMapView.

9
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views 
{  
    MKAnnotationView *annotationView = [views objectAtIndex:0]; 
    id<MKAnnotation> mp = [annotationView annotation]; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,350,350); 

    [mv setRegion:region animated:YES];  

    [mapView selectAnnotation:mp animated:YES]; 

} 

si vous faites la même chose qui appelle la méthode setRegion, assurez-vous que vous appelez

[mapView selectAnnotation:mp animated:YES]; 

après

[mv setRegion:region animated:YES];  
0

À partir de iOS 11, il y a nouveau type de MKAnnotationView appelé MKMarkerAnnotationView, qui peut afficher le titre et les sous-titres sans être sélectionné. Check https://developer.apple.com/documentation/mapkit/mkmarkerannotationview

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 

    guard !(annotation is MKUserLocation) else { 
     return nil 
    } 

    if #available(iOS 11.0, *) { 
     let annoView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "HunterAnno") 
     annoView.canShowCallout = true 
     return annoView 
    } 

    let annoView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "HunterAnnoLow") 
    annoView.canShowCallout = true 
    return annoView 
} 
+1

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'avis] (/ review/low-quality-posts/17880863) – stdunbar