咱们先看下效果图:java
apk下载地址git
扫我下载apk:github
优点:数组
关键类 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
源码下载地址