Wie zu fangen, die map-panning und zoom sind wirklich fertig?
Ich versuche, eine Anwendung zu schreiben, die dynamisch Daten laden, um anzeigen während der Benutzer schwenkt oder zoomt es.
Brauche ich, um zu verfolgen, wenn die map fertig ist, zu ändern, seine Sicht auf Zustand (nicht schwenken oder Zoomen) und laden Sie dann eine neue portion der Daten für die Erstellung von Markern. Aber in der Tat Google Maps API nicht irgendwelche Ereignisse, um diese zu bewältigen.
Gibt es einige Methoden, wie erstellen Sie ein leeres overlay zur Steuerung onTouch
Veranstaltungen und so weiter, aber map-panning konnte, lange nachdem der Benutzer beendet seine Berührung, weil GMaps ist eine Art von Trägheit, um die pan glatter.
Ich versuchte Unterklasse MapView
aber seine draw()
Methode ist final
damit es nicht überschrieben werden kann.
Irgendwelche Ideen, wie die genaue Handhabung der pan-und zoom-Ausrüstung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stunden zu recherchieren und eine Entscheidung gefunden wurde. Es hat einige Nachteile und Vorteile, die beschreibe ich weiter.
Hauptsache, wir tun sollten, ist zu überschreiben MapView die Methoden für die Zeichnung Verhalten. In Fall können wir nicht überschreiben, Methode draw() sollten wir einen anderen Weg finden, in. Es ist ein weiteres Derivat aus der Ansicht, die überschrieben werden kann - computeScroll () - Methode. Es ist immer wieder aufgerufen, wie die Karte weiterhin-Polsterung. Alles, was wir tun müssen, ist einige Zeit, die Schwelle zu fangen, wenn computeScroll heißt nicht mehr diese Zeit.
Hier ist was ich getan habe:
Dann sollten Sie sich registrieren event-Handler in Ihre MapActivity wie diese:
Nun was über Vorteile und Nachteile hat dieser Ansatz?
Vorteile:
- Ereignisse, die Griffe oder so Karte wurde geschwenkt oder gezoomt. Touch-event, hardware-Schlüssel, der verwendet wurde, auch programmgesteuert ausgelöst Ereignisse behandelt werden (wie setZoom() oder animate () - Methoden).
- Die Fähigkeit zu überspringen unnötige laden der Daten klickt der Benutzer auf zoom-Taste mehrmals schnell. Ereignis wird nur ausgelöst, nachdem Klicks wird gestoppt.
Nachteile:
- Es ist durchaus nicht möglich zu stornieren, Zoomen oder verschieben Aktion (vielleicht habe ich ' ll fügen Sie diese Fähigkeit in der Zukunft)
Hoffe, diese kleine Klasse wird Ihnen helfen.
OverlayItem
s oder die rotation ändern, computeScroll() würde auch ausgelöst werden, wodurch dieonPanChangeListener
Feuer.Den MapChange Projekt, ursprünglich geschrieben auf einem ähnliche Frage hier, hat mir geholfen, zu tun, die gleiche Aufgabe, die Sie gefragt haben.
Nun, dies kann verwendet werden:
Callback-Schnittstelle für, wenn die Kamerabewegung beendet ist