Animated AnnotationView verschwindet beim Zoomen der Mapview?

8

Ich füge der Ebene CABasicAnimation eine AnnotationView hinzu, um ein Auto zu simulieren, das sich auf der Kartenansicht bewegt.

Das funktioniert gut, bis ich versuche, die Kartenansicht zu vergrößern oder zu verkleinern, während die Animation läuft.

Ich habe festgestellt, dass die animierende Anmerkungsansicht beim Zoomen der Kartenansicht nicht mehr angezeigt wird !!

Ich nehme an, dass dies möglicherweise dadurch verursacht wird, dass die dem Animationsobjekt zugeordnete Ebene beim Zoomen der Kartenansicht entfernt wurde.

Ich versuche das zu lösen, indem ich die Animation beim Zoomen stoppe. aber das Ergebnis ist nicht gut. Das Auto scheint zum Zielpunkt zu springen.

Hat jemand Ideen dazu?

Weiß jemand, wie die Animation beim Zoomen der Kartenansicht noch ausgeführt werden kann?

    
Hubert 11.07.2012, 09:06
quelle

3 Antworten

1

Ich weiß nicht, wie Sie Ihr Problem programmatisch lösen können, aber was ist, wenn Sie die Fahrzeugposition speichern (Punkt a), wenn der Benutzer zu zoomen beginnt, wenn der Zoom abgeschlossen ist, berechnen Sie den Abstand zwischen der aktuellen Position und der neuen Position (Punkt b) und animiere es dann von Punkt a zu Punkt b. Auf diese Weise würde das Auto nicht zum nächsten Zielpunkt "springen". Um es etwas zarter zu machen, starten Sie die Geschwindigkeit des Autos mit der doppelten Geschwindigkeit und verlangsamen Sie dann auf normale Geschwindigkeit, wenn Sie sich dem Punkt "B" nähern. Ich denke, dadurch wird es weniger wie ein Käfer aussehen, sondern eher wie ein Effekt.

    
Beleg 24.07.2012 14:42
quelle
1

Ich habe es gelöst, indem ich alle Annotationsanimationen auf regionWillChangeAnimated beendet habe: -

%Vor%     
goelectric 19.10.2012 13:16
quelle
0

Ich denke, Sie können die Methode mapView:regionDidChangeAnimated: delegate verwenden. Jedes Mal, wenn der Benutzer scrollt / zoomt, wird diese Methode aufgerufen. versuche es einfach einmal. Es kann dir helfen.

    
parilogic 30.07.2012 11:16
quelle