2016-11-03 3 views
0

Ich benutze MapKit und versuche gerade ein benutzerdefiniertes Pin Annotation Image auf meinen Pins zu setzen. Allerdings fällt es mir schwer herauszufinden, warum es nicht funktioniert. Der ganze andere Code funktioniert perfekt, und wenn ich versuche, den Rahmen des Bildes nach der Einstellung zu drucken, zeigt es die korrekten Abmessungen für mein "pinImage", so dass es scheint, das Bild auf der Eigenschaft zu setzen.Benutzerdefiniertes Bild einstellen - MKPinAnnotationView - Swift 3

Auch der Delegat ist korrekt festgelegt, dies wird überprüft, indem eine benutzerdefinierte Farbe auf der Standard-PIN festgelegt wird.

Ich habe auch versucht, "pinImage.png", ohne Glück. Und da MKPinAnnotationView eine Unterklasse von MKAnnotationView ist, sehe ich kein Problem damit, warum das das Problem sein sollte, und um sicher zu sein, habe ich versucht, den MKAnnotationView auch ohne Glück zu benutzen.

Hier ist mein Code:

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

    if let annotation = annotation as? Pin { 
     let identifier = LocalConstants.pinIdentifier 
     var view: MKPinAnnotationView 
     if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKPinAnnotationView { 
      dequeuedView.annotation = annotation 
      view = dequeuedView 
     } else { 

      view = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier) 
      view.canShowCallout = true 
      view.calloutOffset = CGPoint(x: -5, y: 5) 
      let detailButton = UIButton(type: .detailDisclosure) as UIView 
      view.rightCalloutAccessoryView = detailButton 
      //view.pinTintColor = Util.Colors.pluppPurple 
     } 
     view.image = UIImage(named: "pinImage") 
     return view 
    } 

Vielen Dank im Voraus!

Antwort

0

Die Antwort war in der Tat, MKAnnotationView und nicht MKPinAnnotationView zu verwenden. Ich weiß nicht, was ich vermasselt habe, als ich es gestern ausprobiert habe. Endgültige Arbeitskopie unten, für zukünftige Referenz:

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

    if let annotation = annotation as? Pin { 
     let identifier = LocalConstants.pinIdentifier 
     var view: MKAnnotationView 

     if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) { 
      dequeuedView.annotation = annotation 
      view = dequeuedView 
     } else { 
      view = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier) 
      view.canShowCallout = true 
      view.calloutOffset = CGPoint(x: -5, y: 5) 
      view.tintColor = Util.Colors.pluppGrey 

      let detailButton = UIButton(type: .detailDisclosure) as UIView 
      view.rightCalloutAccessoryView = detailButton 
     } 
     view.image = UIImage(named: LocalConstants.pluppPin) 
     return view 
    } 
    return nil 
} 
Verwandte Themen