仿滴滴多個車輛平滑移動效果
阿新 • • 發佈:2018-11-25
仿滴滴多個車輛平滑移動效果
我們先看下效果圖:
掃我下載apk:
優勢:
- 可以使用普通的Marker類,不用再使用高德提供的SmoothMoveMarker。
- 可以返回的車輛行駛角度。(這個角度是根據兩個點座標來計算出來)。
- 跟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
CustomAnimator
原始碼下載地址