2013-10-01 8 views
8

Używam sdk mapy google. Chcę aktualizować współrzędne GPS pin po każdych 5 sekundach. Aktualnie aktualizuję atrybut pozycji GMSMarker. Ale daje efekt skoku. Chcę płynnie przesuwać znacznik na mapie.
Oto mój kod zaktualizować pozycję markeraJak płynnie przesuwać GMSMarker wzdłuż współrzędnych w Celu c

-(void)updateLocationoordinates(CLLocationCoordinate2D) coordinates 
{ 
    if (marker == nil) { 
     marker = [GMSMarker markerWithPosition:coordinates]; 
     marker.icon = [UIImage imageNamed:CAR_FOUND_IMAGE]; 
     marker.map = mapView_; 
    } else 
    marker.position = coordinates; 
} 

Odpowiedz

28

Zmiana innego bloku być czymś więcej tak:

[CATransaction begin]; 
[CATransaction setAnimationDuration:2.0]; 
marker.position = coordindates; 
[CATransaction commit]; 

Mamy pozwalają używać Core Animation do animowania Google Maps.

Przepracowaną próbkę można znaleźć w przykładowej aplikacji SDK pod adresem AnimatedCurrentLocationViewController.{c,m}.

+0

Dziękuję @Brett. Zaktualizowałem go sdk następnie te animacje działały dobrze. – Sadia

+0

Dla mnie to nie zadziałało. W rzeczywistości całkowicie przerwał animację właściwości .position. Dobrą wiadomością jest to, że dokładnie to, czego chciałem: sposób na wyłączenie animacji właściwości .position. Dzięki za tonę! Dla porównania ustawiłem czas trwania animacji na 0.0, ale mając wartość inną niż 0 nadal nie animowałem. – u2Fan

+1

OK - skłamałem. Działa dokładnie tak, jak wspomina plakat. Właśnie spieprzyłem mój test. Zauważyłem jednak, że jest za późno na edycję mojego pierwszego komentarza. – u2Fan

0

tylko Inicjalizacja znacznik zdaniem zrobił obciążenia i aktualizować go, gdy chcesz zrobić to bez konieczności jakiegokolwiek rodzaju animacji jak

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    ..write code here 
     marker = [[GMSMarker alloc] init]; 
} 
    marker.position = CLLocationCoordinate2DMake([latitudue doubleValue], [longitude doubleValue]); 
+0

Sformatuj swój kod, proszę. – thewaywewere

Powiązane problemy