2013-08-28 1 views
2

У меня есть изображение над картой, и я хочу дать ему некоторое линейное и вращательное движение по картам google.Анимация маркера в SDK Google Maps в iOS

Как это сделать в GMS? Пожалуйста, помогите мне.

+0

http://stackoverflow.com/questions/40543095/bounce-animation-on-google-map-marker-in-ios-objective-c/41764821#41764821 анимировать google-маркер в iOS – Dhiru

ответ

2

Вы можете добавить изображение в качестве маркеров, а затем использовать свойство слоя этого маркера, чтобы добавить некоторые эффекты анимации с помощью CoreAnimation

Смотрите документацию: developers.google.com/maps/documentation/ios/reference/

+0

Я знаю об этом , На GMSMarker есть свойство слоя, которое позволяет вам его оживить. Я просто анимировал маркер, используя его. См. Документы: https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_map_layer – kmdupr33

+0

ИЗБЕГАЙТЕ! не знал, что они добавили, что - мы все еще на очень старой версии –

+0

Нет проблем вообще. – kmdupr33

0

На самом деле я решил эту проблему, используя следующий код и Метод GMSMarker setPosition:. Следующий код обеспечивает поворот изображений и использование setPosition: мы можем поместить маркер/изображение в любом месте. Комбинация обоих дает требуемое линейное и вращательное движение.

- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees image: (UIImage*) image 
{ 
    CGSize size = image.size;; 

    UIGraphicsBeginImageContext(size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextTranslateCTM(context, 0.5f * size.width, 0.5f * size.height) ; 
    CGContextRotateCTM (context, DegreesToRadians(degrees)); 

    [ image drawInRect:(CGRect){ { -size.width * 0.5f, -size.height * 0.5f }, size } ] ; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
+0

Я пробовал свой код, но мой значок маркера кажется сжатым. У вас есть идея, как это исправить? –

+0

@RahulVyas Это может быть так, если ваше изображение не квадратное. Попробуйте изменить множитель '0.5'. – khushalbokadey

+0

Пробовал другое, что сработало. Вы знаете, как мы можем плавно поворачивать автомобиль в направлении движения, как убер? Я обновляю значения курса на своем сервере. –

0

Это простой процесс. Сначала поверните маркер, чтобы получить право заголовок, используя эту функцию:

+(float)getBearing:(CLLocationCoordinate2D)locations1 andSecond:(CLLocationCoordinate2D)locattion2{ 
    float fLat = degreesToRadians(locations1.latitude); 
    float fLng = degreesToRadians(locations1.longitude); 
    float tLat = degreesToRadians(locattion2.latitude); 
    float tLng = degreesToRadians(locattion2.longitude); 

    float degree = radiansToDegrees(atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng))); 

    if (degree >= 0) { 
     return degree; 
    } else { 
     return 360+degree; 
    } 
} 

Затем повернуть маркер на новый заголовок:

YOUR_MARKER.rotation = CALCULATED_HEADING - 180; 

Теперь последний шаг, чтобы оживить ваш водитель плавно

[CATransaction begin]; 
[CATransaction setAnimationDuration:3.1]; 
[YOUR_MARKER setPosition:NEW_LOCATION_COORDINATES]; 
[CATransaction commit]; 

 Смежные вопросы

  • Нет связанных вопросов^_^