点平滑移动 最后更新时间: 2021年01月22日
简介
功能说明:根据输入的关键点和时间参数,实现点的平滑移动效果。(如下方视频所示)
使用场景:可应用到展示车辆行驶轨迹、用户移动轨迹等场景。
版本要求:3D地图V4.5.0及以上。
效果示例:
如何实现点平滑移动
相关头文件
相关接口
MAAnimatedAnnotation.h:(以下内容仅提供OC形式的代码片段)
@interface MAAnimatedAnnotation : MAPointAnnotation<MAAnimatableAnnotation>
/**
@brief 添加移动动画, 第一个添加的动画以当前coordinate为起始点,沿传入的coordinates点移动,否则以上一个动画终点为起始点. since 4.5.0
@param coordinates 数组
@param count 要传入的个数
@param duration 动画时长,0或<0为无动画
@param name 名字,如不指定可传nil
@param completeCallback 动画完成回调,isFinished: 动画是否执行完成
*/
- (void)addMoveAnimationWithKeyCoordinates:(CLLocationCoordinate2D *)coordinates
count:(NSUInteger)count
withDuration:(CGFloat)duration
withName:(NSString *)name
completeCallback:(void(^)(BOOL isFinished))completeCallback;
/**
获取所有未完成的移动动画, 返回数组内为MAAnnotationMoveAnimation对象. since 4.5.0
*/
- (NSArray<MAAnnotationMoveAnimation*> *)allMoveAnimations;
/**
* 移动方向. since 4.5.0
*/
@property (nonatomic, assign) CLLocationDirection movingDirection;
@end
如何实现
1.向地图中添加annotation, annotation必须继承自MAAnimatedAnnotation,或自己实现MAAnimatableAnnotation协议,并实现自己的动画。
2.添加动画
调用annotation 的addMoveAnimationWithKeyCoordinates接口添加动画
[self.annotation addMoveAnimationWithKeyCoordinates:coords1 count:sizeof(coords1) / sizeof(coords1[0]) withDuration:5 withName:nil completeCallback:^(BOOL isFinished) {
}];
self.movingAnnotation.addMoveAnimation(withKeyCoordinates:&(self.coords1), count: UInt(self.coords1.count), withDuration: 5, withName: nil, completeCallback:nil);
3.结束未完成动画
for (MAAnnotationMoveAnimation *animation in [self.annotation allMoveAnimations]) {
[animation cancel];
}
for item in self.movingAnnotation.allMoveAnimations() {
let animation = item
animation.cancel()
}