2017-11-03 2 views
0

Ich benutze iOS 11 neue APIs und es ist mir gelungen, Cluster erscheinen zu lassen. Jetzt versuche ich das Cluster-Image zu ändern, indem ich ein benutzerdefiniertes Image zur Verfügung stelle. Da ich diese kundenspezifische Anmerkungsansicht erstellt:Ist es möglich, das Cluster-Image in iOS 11 anzupassen?

class PlaceView: MKAnnotationView { 
     override var annotation: MKAnnotation? { 
      willSet { 
       guard let place = newValue as? Place else {return} 
       clusteringIdentifier = Place.type 
       image = place.image 
      } 
    } 

Ich habe versucht, diese Zeile innerhalb willSet Block hinzuzufügen:

cluster?.image = UIImage(named: "Cluster")

aber es hat nicht funktioniert.

Was fehlt mir? Kann mir jemand in die richtige Richtung zeigen?

Antwort

0

Sie sollten überprüfen, ob die Anmerkung vom Typ MKClusterAnnotation ist. Wenn dies der Fall ist, können Sie die Eigenschaft memberAnnotations verwenden, um auf die Elementanmerkungen zuzugreifen. In Ihrem Fall zum Beispiel, könnte man sagen:

override var annotation: MKAnnotation? 
{ 
    willSet 
    { 
     if let cluster = newValue as? MKClusterAnnotation { 
      image = UIImage(named: "Cluster") 
     } else { 
      // set image for non cluster 
     } 
    } 
} 

Weitere Informationen finden Sie WWDC 2017 What's New with MapKit.

+0

Vielen Dank für Ihre Beratung, vermisste ich völlig auf diesen Link! Ich konnte jedoch mein Problem bei der Untersuchung des WWDC-Beispielprojekts lösen: Ich musste diese Zeile in meinem View-Controller hinzufügen: 'mapView.register (ClusterView.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultClusterAnnotationViewReuseIdentifier)' (Ich habe eine neue Klasse zum Anpassen von Clustern erstellt MKAnnotationView too) – DDD

+0

Passen Sie auf, dass die neue Registrierungsmethode auf MKMapView fehlerhaft ist, Sie sollten immer noch die MKMapViewDelegate-Methoden verwenden: forens.developer.apple.com/thread/89427 –

Verwandte Themen