2017-10-08 2 views
0

Avec iOS 11, le comportement par défaut consiste à regrouper les annotations dans une vue cartographique lorsque vous effectuez un zoom arrière. Je ne veux pas que cela arrive pour mon cas d'utilisation, donc j'essaie de désactiver ce comportement par défaut. J'ai essayé de le désactiver en retour Nil de la méthode facultative MKMapViewDelegate comme ceci:Nil est incompatible avec le type de retour 'MKClusterAnnotation'

@available(iOS 11.0, *) 
func mapView(_ mapView: MKMapView, clusterAnnotationForMemberAnnotations memberAnnotations: [MKAnnotation]) -> MKClusterAnnotation { 
    return nil // error on this line 
} 

Mais voir l'erreur: Nil is incompatible with return type 'MKClusterAnnotation'

J'ai essayé ce qui suit aussi bien en vain:

@available(iOS 11.0, *) 
func mapView(_ mapView: MKMapView, clusterAnnotationForMemberAnnotations memberAnnotations: [MKAnnotation]) -> MKClusterAnnotation { 
    return MKClusterAnnotation.init(memberAnnotations: []) 
} 

Edit:

Comme par Marcel ce qui suit, mais de suggestion que je mis en œuvre, je vois encore le même comportement:

func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView]) { 
    for view in views { 
     if #available(iOS 11.0, *) { 
      view.displayPriority = .required 
     } 
    } 
} 

Répondre

0

La fonction est facultative dans MKMapViewDelegate, de sorte que vous n'avez pas à le mettre en œuvre. Quand vous l'implémentez, sa valeur de retour est non-optionnelle. Donc, vous devez retourner un MKClusterAnnotation, c'est pourquoi vous obtenez une erreur de compilation.

Essayez de définir displayPriority de tous vos MKAnnotationView s sur MKFeatureDisplayPriority.required.

Voir: https://developer.apple.com/documentation/mapkit/mkfeaturedisplaypriority/2867301-required

+0

Merci pour la réponse. J'ai tenté votre suggestion, mais je n'ai vu aucune différence. Consultez ma question pour les détails mis à jour. – Stunner