仿滴滴多個車輛平滑移動效果

仿滴滴多個車輛平滑移動效果

咱們先看下效果圖:java

image

apk下載地址git

掃我下載apk:github

image

優點:數組

  1. 能夠使用普通的Marker類,不用再使用高德提供的SmoothMoveMarker。
  2. 能夠返回的車輛行駛角度。(這個角度是根據兩個點座標來計算出來)。
  3. 跟Marker類解耦

關鍵類 MoveUtils 提供的方法以下。app

/**
     *  
     * @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代碼ide

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源碼code

CustomAnimatorget

CustomAnimator源碼源碼

源碼下載地址

源碼下載地址

相關文章
相關標籤/搜索