Objective-c

iOS高德地图-点平滑移动

2017-04-04  本文已影响2292人  CoderZNB

导图

我是一个文艺iOS开发人员

功能说明:根据输入的关键点和时间参数,实现点的平滑移动效果。
使用场景:可应用到展示车辆行驶轨迹、用户移动轨迹等场景。

点平滑移动.gif

点平滑移动实现步骤

1.首先要创建一个MAAnimatedAnnotation对象,并且调用他的一个添加动画的方法

注意:这个方法可以调用多次,即动画可以添加多个

/**
 @brief 添加移动动画, 第一个添加的动画以当前coordinate为起始点,沿传入的coordinates点移动,否则以上一个动画终点为起始点. since 4.5.0
 @param coordinates c数组,由调用者负责coordinates指向内存的管理
 @param count coordinates数组大小
 @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
强烈建议: duration最好根据距离(经纬度差)来设置,也就是距离长点duration设置大点,这样显得动画自然,

另外模拟器会造成实际动画时间跟你设置的动画时间不符合,很明显感觉动画执行完时间要多于你设置的时间

2.并且给MAAnimatedAnnotation对象设置coordinate属性


    MAAnimatedAnnotation *anno = [[MAAnimatedAnnotation alloc] init];
    anno.coordinate = coords1[0];

3.再将anno添加到mapView上就行了

[self.mapView addAnnotation:self.annotation];

注意:本例中所有的经纬度位置信息都是写死的,这只是为了更好的显示展示效果,实际开发中应该是根据起始点的建议位置信息和实时经纬度位置信息进行绘制,本文不做过多讲解,另外,笔者水平有限,要是给各位大虾们造成什么疑惑而引起心理乃至身体的事故,医药费恕不报销,谢谢~~~~
Demo 地址:
https://github.com/ZNBmm/AmapAnimatedAnnotation

上一篇下一篇

猜你喜欢

热点阅读