Ich erstelle benutzerdefinierte Annotation für MKMap. Es ist Arbeit, aber wenn ich auf eine Annotation klicke, verschwindet die Annotation (siehe Bild), dann erscheint und verschwindet die Annonce.MKViewMap benutzerdefinierte Annotation verschwindet beim Klick
(Ich habe dieses Tutorial getan https://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial)
Hier wird die benutzerdefinierte Anmerkung:
`Klasse Trail: NSObject, MKAnnotation {
let title: String?
let difficulty: String
let coordinate: CLLocationCoordinate2D
var enableInfoButton : Bool
init(title: String, difficulty: String, coordinate: CLLocationCoordinate2D, enableInfoButton : Bool) {
self.title = title
self.difficulty = difficulty
self.coordinate = coordinate
self.enableInfoButton = enableInfoButton;
super.init()
}
var subtitle: String? {
return title
}
func annotationView() -> MKAnnotationView {
let view = MKAnnotationView(annotation: self, reuseIdentifier: "trailPin")
view.translatesAutoresizingMaskIntoConstraints = false
view.enabled = true
view.canShowCallout = true
view.rightCalloutAccessoryView = UIButton(type: UIButtonType.Custom)
view.centerOffset = CGPointMake(0, -32)
if(difficulty == Difficulty.HARD){
view.image = UIImage(named: "ic_map_poi_trail_hard")
}
else if(difficulty == Difficulty.AVERAGE){
view.image = UIImage(named: "ic_map_poi_trail_average")
}
else if(difficulty == Difficulty.EASY){
view.image = UIImage(named: "ic_map_poi_trail_easy")
}
/*if(self.enableInfoButton){
let detailButton = UIButton(type: UIButtonType.System) as UIButton
detailButton.frame.size.width = 35
detailButton.frame.size.height = 35
detailButton.backgroundColor = UIColor.whiteColor()
detailButton.setImage(UIImage(named: "map"), forState: .Normal)
detailButton.addTarget(self, action: #selector(Trail.infoClicked(_:)), forControlEvents: .TouchUpInside)
view.leftCalloutAccessoryView = detailButton
}*/
return view
}
func infoClicked(sender: AnyObject?) {
print("infoClicked")
}
}`
und in der Ansicht Controller:
func mapView (mapView: MKMapView, viewForAnnotation Anmerkung: MKAnnotation) -> MKAnnotationView? {
if (annotation.isKindOfClass(Trail)) {
let customAnnotation = annotation as? Trail
mapView.translatesAutoresizingMaskIntoConstraints = false
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("trailPin") as MKAnnotationView!
if (annotationView == nil) {
annotationView = customAnnotation?.annotationView()
} else {
annotationView.annotation = annotation;
}
//self.addBounceAnimationToView(annotationView)
return annotationView
} else {
let reuseId = "trailPin"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView!.image = UIImage(named:"map")
anView!.canShowCallout = true
}
else {
//we are re-using a view, update its annotation reference...
anView!.annotation = annotation
}
return anView
}
}
Danke =)
Bye
niemand? help needed = ( – Xero