2017-06-06 4 views
0

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:

Before Pan/Zoom

Ansicht unmittelbar nach dem Schwenk/Zoomen:

View immediately after panning/zooming

Antwort

1

Von der MapBox API-Dokumentation für isAnchoredToAnnotation:

Ein boolescher Wert, der angibt, ob die Callout-Ansicht in der entsprechenden Anmerkung verankert werden soll. Sie können die genaue Position der Callout-Ansicht durch Überschreiben anpassen - [UIView setCenter:]. Die Callout-Ansicht wird nicht in der Annotation verankert, wenn diese optionale Eigenschaft nicht implementiert ist.

In Swift, das wäre: myView.center =
Hoffnung, das hilft.

EDIT: - Werfen Sie einen Blick auf this example auf der Mapbox-Website, die beschreibt, wie ziehbare Annotationen zu implementieren. Der interessante Teil ist in der setDragState Methode, wo der Zieh-Zustand (ein MGLAnnotationViewDragState) getestet wird. Ich würde vorschlagen, die Callcenter-Koordinatenaktualisierung im .dragging-Fall in ähnlicher Weise zu implementieren, wie sie die Funktionen startDragging() und endDragging() implementiert haben.

+0

Ich habe versucht, die Mitte meiner CustomCalloutView in meiner MGLMapViewDelegate, 'CalloutViewFor Annotation' Methode, aber es scheint keinen Unterschied zu machen. – keverly

+0

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

Verwandte Themen