Ich habe die Anleitung here gefolgt, um benutzerdefinierte Callout-Ansichten zu erstellen. Ich habe zwei Linien auf die benutzerdefinierte Klasse:Mapbox Callout weitergehen Pan/Zoom.
var dismissesAutomatically: Bool = false
var isAnchoredToAnnotation: Bool = true
Diese scheinen die Arbeit zu tun, wenn es zu halten, die Callout Ansicht kommt angezeigt, wenn Schwenken und Zoomen, und halten an den Anmerkungs verankert. Das Callout scheint jedoch etwa 20 Pixel zu verlieren, wenn der Benutzer schwenkt oder zoomt.
Erste Ansicht, wenn Annotation angezapft wird, aber vor Schwenken/Zoomen:
Ansicht unmittelbar nach dem Schwenk/Zoomen:
Ich habe versucht, die Mitte meiner CustomCalloutView in meiner MGLMapViewDelegate, 'CalloutViewFor Annotation' Methode, aber es scheint keinen Unterschied zu machen. – keverly
Ich habe einige weitere Informationen zu meiner Antwort hinzugefügt. Die Position des Callouts muss während des Drag-Prozesses kontinuierlich aktualisiert werden, weshalb ich auf eine mögliche Lösung verwiesen habe. Es könnte sich lohnen zu fragen, warum Sie Annotationsverhalten implementieren müssen, das der Benutzer während der normalen Kartennutzung nicht erwartet. Benutzer sind daran gewöhnt, dass Callouts verschwinden, wenn sie gezogen werden, und Sie können sie immer wieder anzeigen lassen, wenn die Annotation erneut gelöscht wird. – Magnas