美文网首页
仿滴滴多个车辆平滑移动效果

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

作者: 一个游戏8 | 来源:发表于2018-09-27 18:07 被阅读183次

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

    我们先看下效果图:

    仿滴滴多个车辆移动.gif

    apk下载地址

    扫我下载apk:


    apk下载二维码

    优势:

    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://www.haomeiwen.com/subject/uofyoftx.html