У меня есть изображение над картой, и я хочу дать ему некоторое линейное и вращательное движение по картам google.Анимация маркера в SDK Google Maps в iOS
Как это сделать в GMS? Пожалуйста, помогите мне.
У меня есть изображение над картой, и я хочу дать ему некоторое линейное и вращательное движение по картам google.Анимация маркера в SDK Google Maps в iOS
Как это сделать в GMS? Пожалуйста, помогите мне.
Вы можете добавить изображение в качестве маркеров, а затем использовать свойство слоя этого маркера, чтобы добавить некоторые эффекты анимации с помощью CoreAnimation
Смотрите документацию: developers.google.com/maps/documentation/ios/reference/
Я знаю об этом , На GMSMarker есть свойство слоя, которое позволяет вам его оживить. Я просто анимировал маркер, используя его. См. Документы: https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_map_layer – kmdupr33
ИЗБЕГАЙТЕ! не знал, что они добавили, что - мы все еще на очень старой версии –
Нет проблем вообще. – kmdupr33
На самом деле я решил эту проблему, используя следующий код и Метод 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;
}
Я пробовал свой код, но мой значок маркера кажется сжатым. У вас есть идея, как это исправить? –
@RahulVyas Это может быть так, если ваше изображение не квадратное. Попробуйте изменить множитель '0.5'. – khushalbokadey
Пробовал другое, что сработало. Вы знаете, как мы можем плавно поворачивать автомобиль в направлении движения, как убер? Я обновляю значения курса на своем сервере. –
Это простой процесс. Сначала поверните маркер, чтобы получить право заголовок, используя эту функцию:
+(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];
http://stackoverflow.com/questions/40543095/bounce-animation-on-google-map-marker-in-ios-objective-c/41764821#41764821 анимировать google-маркер в iOS – Dhiru