2017-03-24 4 views
0

MapBox bietet handliche Dokumentation zum Anpassen einer Anmerkung des Bildes und Anpassen einer Anmerkung Ansicht hinzuzufügen:Ist es möglich, ein Bild zu einer benutzerdefinierten MGLAnnotationView in MapBox (iOS, Swift)

https://www.mapbox.com/ios-sdk/examples/annotation-views/ https://www.mapbox.com/ios-sdk/examples/marker-image/

aber es doesn Es scheint nicht möglich, diese Ideen zu kombinieren und das Bild einer Anmerkungsansicht anzupassen. Grundsätzlich hoffe ich, eine Annotation eines Fotos zu haben (welches der Benutzer auswählt), der auch einen Boarder hat, der animiert werden kann, wenn er angetippt wird.

Hat jemand diese Einschränkung auch erreicht?

Antwort

1

MGLAnnotationView erbt von UIView, so dass die meisten Techniken, die Sie zum Hinzufügen eines Bildes zu einer Ansicht verwenden, auch hier funktionieren.

class CustomImageAnnotationView: MGLAnnotationView { 
    var imageView: UIImageView! 

    required init(reuseIdentifier: String?, image: UIImage) { 
     super.init(reuseIdentifier: reuseIdentifier) 

     self.imageView = UIImageView(image: image) 
     self.addSubview(self.imageView) 
     self.frame = self.imageView.frame 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 
} 

Und dann verwenden Sie diese Unterklasse in mapView:viewForAnnotation::

func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? { 
    guard annotation is MGLPointAnnotation else { 
     return nil 
    } 

    let imageName = "someImageThatYouHaveAddedToYourAppBundle" 

    // Use the image name as the reuse identifier for its view. 
    let reuseIdentifier = imageName 

    // For better performance, always try to reuse existing annotations. 
    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseIdentifier) 

    // If there’s no reusable annotation view available, initialize a new one. 
    if annotationView == nil { 
     annotationView = CustomImageAnnotationView(reuseIdentifier: reuseIdentifier, image: UIImage(named: imageName)!) 
    } 

    return annotationView 
} 

wäre eine einfache Art und Weise UIImageView als Subview in einem benutzerdefinierten MGLAnnotationView Unterklasse hinzuzufügen sein

Verwandte Themen