在圆形路径中对GMSMarker进行动画处理

贾莫恩

我了解如何基于此SO问题在圆形路径中正常制作其他CALayers的动画:iPhone-如何为CAKeyframeAnimation制作圆形路径?

但是,GMSMarkerLayer是CALayers的一个特殊子类,它似乎不响应“位置”键路径(按照该链接中的说明操作,我看不到任何可见的东西),而是响应“纬度”和“经度”键路径代替。

这是我尝试过的代码:

CAKeyframeAnimation *circlePathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef circularPath = CGPathCreateMutable();
CGRect pathRect = CGRectMake(marker.position.latitude, marker.position.longitude, 0.001, 0.001);
CGPathAddEllipseInRect(circularPath, NULL, pathRect);
circlePathAnimation.path = circularPath;
circlePathAnimation.duration = 1.0f;
circlePathAnimation.repeatCount = HUGE_VALF;

[marker.layer addAnimation:circlePathAnimation forKey:[NSString stringWithFormat:@"circular-%@", marker.description]];
CGPathRelease(circularPath);

由于关键帧动画将使用“位置”关键路径,因此如何将其转换为2个单独的关键路径(纬度和经度),以便可以在地图上的圆圈中为标记设置动画?

任何帮助是极大的赞赏。

贾莫恩

由于当前我无法使用“位置”键路径进行动画处理,因此我最终分别使用“纬度”和“经度”键路径对其进行了动画处理。

首先计算点并将其添加到2个单独的数组中,一个用于纬度值(y),另一个用于经度(x),然后使用CAKeyFrameAnimation中的values属性进行动画处理。创建2个CAKeyFrameAnimation对象(每个轴1个),并使用CAAnimationGroup将它们分组在一起,并对其进行动画处理以形成一个圆。

在我的方程式中,我改变了每个轴上半径的长度,以便也可以生成椭圆形路径。

    NSMutableArray *latitudes = [NSMutableArray arrayWithCapacity:21];
    NSMutableArray *longitudes = [NSMutableArray arrayWithCapacity:21];
    for (int i = 0; i <= 20; i++) {
        CGFloat radians = (float)i * ((2.0f * M_PI) / 20.0f);

        // Calculate the x,y coordinate using the angle
        CGFloat x = hDist * cosf(radians);
        CGFloat y = vDist * sinf(radians);

        // Calculate the real lat and lon using the
        // current lat and lon as center points.
        y = marker.position.latitude + y;
        x = marker.position.longitude + x;


        [longitudes addObject:[NSNumber numberWithFloat:x]];
        [latitudes addObject:[NSNumber numberWithFloat:y]];
    }

    CAKeyframeAnimation *horizontalAnimation = [CAKeyframeAnimation animationWithKeyPath:@"longitude"];
    horizontalAnimation.values = longitudes;
    horizontalAnimation.duration = duration;

    CAKeyframeAnimation *verticleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"latitude"];
    verticleAnimation.values = latitudes;
    verticleAnimation.duration = duration;

    CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
    group.animations = @[horizontalAnimation, verticleAnimation];
    group.duration = duration;
    group.repeatCount = HUGE_VALF;
    [marker.layer addAnimation:group forKey:[NSString stringWithFormat:@"circular-%@",marker.description]];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在圆形路径中对GMSMarker进行动画处理

来自分类Dev

对圆形路径上的圆进行动画处理

来自分类Dev

在iOS中对UIImageView的圆形蒙版进行动画处理

来自分类Dev

在iOS中对UIImageView的圆形蒙版进行动画处理

来自分类Dev

在WPF中对路径进行动画处理

来自分类Dev

在BonsaiJS中沿路径对电影进行动画处理

来自分类Dev

Swift:沿动画路径对对象进行动画处理

来自分类Dev

在JQuery中对变量进行动画处理

来自分类Dev

在Python中对图像进行动画处理

来自分类Dev

在UITableViewCell中对UILabel进行动画处理

来自分类Dev

在GridView中对单元进行动画处理

来自分类Dev

在UITableViewCell中对UITableView进行动画处理

来自分类Dev

沿Google Map Android中的路径对汽车(标记)进行动画处理

来自分类Dev

对在drawRect()中绘制的贝塞尔曲线路径进行动画处理

来自分类Dev

iOS Swift在非线性路径中对视图进行动画处理

来自分类Dev

锚定到路径时在Paper.js中对多个项目进行动画处理

来自分类Dev

如何在Kineticjs中对曲线路径上的对象进行动画处理

来自分类Dev

锚定到路径时,在Paper.js中对多个项目进行动画处理

来自分类Dev

在IE11中使用CSS对SVG路径进行动画处理

来自分类Dev

MatrixAnimationUsingPath在路径的周围(轮廓)上进行动画处理

来自分类Dev

对正弦路径上的元素进行动画处理

来自分类Dev

对Raphael元素及其发光路径集进行动画处理

来自分类Dev

捕捉SVG:在路径上进行动画处理

来自分类Dev

在iOS中仅沿路径的一部分对视图进行动画处理

来自分类Dev

如何在Qt中对QPixmap进行动画处理?

来自分类Dev

对MvxRecyclerView中的选定项目进行动画处理

来自分类Dev

在Swift中对对象进行动画处理?

来自分类Dev

在不是SpriteKit的iOS应用中对“角色”进行动画处理

来自分类Dev

在Ember中的路线之间进行动画处理

Related 相关文章

  1. 1

    在圆形路径中对GMSMarker进行动画处理

  2. 2

    对圆形路径上的圆进行动画处理

  3. 3

    在iOS中对UIImageView的圆形蒙版进行动画处理

  4. 4

    在iOS中对UIImageView的圆形蒙版进行动画处理

  5. 5

    在WPF中对路径进行动画处理

  6. 6

    在BonsaiJS中沿路径对电影进行动画处理

  7. 7

    Swift:沿动画路径对对象进行动画处理

  8. 8

    在JQuery中对变量进行动画处理

  9. 9

    在Python中对图像进行动画处理

  10. 10

    在UITableViewCell中对UILabel进行动画处理

  11. 11

    在GridView中对单元进行动画处理

  12. 12

    在UITableViewCell中对UITableView进行动画处理

  13. 13

    沿Google Map Android中的路径对汽车(标记)进行动画处理

  14. 14

    对在drawRect()中绘制的贝塞尔曲线路径进行动画处理

  15. 15

    iOS Swift在非线性路径中对视图进行动画处理

  16. 16

    锚定到路径时在Paper.js中对多个项目进行动画处理

  17. 17

    如何在Kineticjs中对曲线路径上的对象进行动画处理

  18. 18

    锚定到路径时,在Paper.js中对多个项目进行动画处理

  19. 19

    在IE11中使用CSS对SVG路径进行动画处理

  20. 20

    MatrixAnimationUsingPath在路径的周围(轮廓)上进行动画处理

  21. 21

    对正弦路径上的元素进行动画处理

  22. 22

    对Raphael元素及其发光路径集进行动画处理

  23. 23

    捕捉SVG:在路径上进行动画处理

  24. 24

    在iOS中仅沿路径的一部分对视图进行动画处理

  25. 25

    如何在Qt中对QPixmap进行动画处理?

  26. 26

    对MvxRecyclerView中的选定项目进行动画处理

  27. 27

    在Swift中对对象进行动画处理?

  28. 28

    在不是SpriteKit的iOS应用中对“角色”进行动画处理

  29. 29

    在Ember中的路线之间进行动画处理

热门标签

归档