仿滴滴多个车辆平滑移动效果

仿滴滴多个车辆平滑移动效果

我们先看下效果图:

image

apk下载地址

扫我下载apk:

image

优势:

  1. 可以使用普通的Marker类,不用再使用高德提供的SmoothMoveMarker。
  2. 可以返回的车辆行驶角度。(这个角度是根据两个点坐标来计算出来)。
  3. 跟Marker类解耦

关键类 MoveUtils 提供的方法如下。



    /**
     *  
     * @param list 坐标数组
     * @param time 时间   毫秒 多长时间走完这些数组
     * @param isContinue 是否在以上次停止后的坐标点继续移动 当list.size()=1 
     * 注意:如果调用 startMove(list,time,isContinue) 如果list.size=1 只传递了一个点并且isContinue=false
     那么 onSetGeoPoint回调方法返回的角度是0 因为只有一个点是无法计算角度的
     */
    public void startMove(List<LatLng> list, int time, boolean isContinue)
    
    
    
    
    /**
     * 
     * @param latLng 坐标
     * @param time   时间 毫秒
     * @param isContinue 是否在以上次停止后的坐标点继续移动 当list.size()=1 isContinue 就会变的非常有用
     * 注意:如果调用 startMove(list,time,isContinue) 如果list.size=1 只传递了一个点并且isContinue=false
     那么 onSetGeoPoint回调方法返回的角度是0 因为只有一个点是无法计算角度的
     */
    public void startMove(LatLng latLng, int time, boolean isContinue)
    
    
    /**
     *  停止移动
     */
    public void stop()
    
    
    
    /**
     *  释放工具类 
     */
    public void destory()
    
    
    /**
     * 设置监听回调
     * @param callBack OnCallBack
     */
    public void setCallBack(OnCallBack callBack)
    
    
    
     public interface OnCallBack {

        /**
         * 设置坐标IPoint
         * <p>
         * 角度返回  这里的角度返回是根据两个点的坐标来计算的
         * 并不是传感器返回的 
         * 
         *
         *
         * @param point  IPoint
         * @param rotate 角度
         */
        void onSetGeoPoint(IPoint point, float rotate);
    }

如何使用

Demo代码


    moveUtils = new MoveUtils();
      
      
    moveUtils.setCallBack(new MoveUtils.OnCallBack() {
            @Override
            public void onSetGeoPoint(IPoint point, float rotate) {
                if (!marker.isRemoved()) {
                    marker.setGeoPoint(point);
                    //获取实际车辆方向。
                    float carDirection = 360.0F - rotate + getAMap().getCameraPosition().bearing;
                    marker.setRotateAngle(carDirection);
                }


            }
        });
        
        
          moveUtils.startMove(list, 5000, fasle);



源码

MoveUtils

MoveUtils源码

CustomAnimator

CustomAnimator源码

源码下载地址

源码下载地址

转载于:https://my.oschina.net/u/1175746/blog/2209613

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值