在MapBox(iOS)上设置动画标记注释

时间:2014-11-17 15:38:26

标签: ios animation annotations mapbox

我正在尝试使用图片初始化的一些标记进行动画处理,如下所示RMMarker *marker = [[RMMarker alloc] initWithUIImage:lImage anchorPoint:lPoint];

我在地图上得到一张静态图片没问题。 现在,我需要它比其他注释更明显,所以我想让它眨眼。

这是我已经尝试过的:

在注记图层上创建缩放动画

[CATransaction begin];
[CATransaction setAnimationDuration:0.70];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

CABasicAnimation *bounceAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
bounceAnimation.repeatCount = MAXFLOAT;
bounceAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1, 1.1, 1.0)];
bounceAnimation.toValue   = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.8, 0.8, 1.0)];
bounceAnimation.removedOnCompletion = NO;
bounceAnimation.autoreverses = YES;

[layer addAnimation:bounceAnimation forKey:@"animateScale"];

[CATransaction commit];

这很好用,除了我的标注视图也闪烁,因为它共享同一层(并且Mapbox在跟踪模式下与动画混杂,导致方向错误,因为它随着用户的每次移动而重置)。

在注记图层上创建blink动画

[CATransaction begin];
[CATransaction setAnimationDuration:0.60];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.repeatCount = MAXFLOAT;
opacityAnimation.fromValue = [NSNumber numberWithFloat:1.0];
opacityAnimation.toValue   = [NSNumber numberWithFloat:0.3];
opacityAnimation.removedOnCompletion = NO;
opacityAnimation.autoreverses = YES;

[layer addAnimation:opacityAnimation forKey:@"animateOpacity"];

[CATransaction commit];

这不太明显,但这次注释方向是正确的。我的标注视图仍然在图层上闪烁。

我想做什么

我需要一种方法来设置标记图像的动画,而不会影响图层。

我使用的最好的动画是我尝试的第一个动画,没有旋转问题。

到目前为止,我无法为UIImage设置动画,因为它没有addAnimation: forKey:调用。

我从未玩过很多动画,所以任何帮助或指导都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您使用CABasicAnimation进入了正确的轨道,因为这是用于SDK中动画用户位置注释的内容。你可以在这里看到这个:

https://github.com/mapbox/mapbox-ios-sdk/blob/509fa7df46ebd654d130ab2f530a8e380bf2bd59/MapView/Map/RMMapView.m#L3593

你能详细说明一下吗?

  

这很好用,除了我的标注视图也闪烁,因为它共享同一层(并且Mapbox在跟踪模式下与动画混杂,导致方向错误,因为它随着用户的每次移动而重置)。

你确实提出了一个很好的观点,即标注是一个子图层,所以它也会闪烁。此用例未被考虑 - 您是否可以取消选择注释,从而隐藏标注?

但是后者是什么意思?