diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoADASAutoPilotStatusChangedListener.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoADASAutoPilotStatusChangedListener.java new file mode 100644 index 0000000000..944f331d2c --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoADASAutoPilotStatusChangedListener.java @@ -0,0 +1,13 @@ +package com.mogo.och.taxi; + +public +/** + * @author congtaowang + * @since 2021/1/26 + * + * adas 可自动驾驶状态切换逻辑 + */ +interface IMogoADASAutoPilotStatusChangedListener { + + void onAutoPilotStatusChanged( int status, String reason ); +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 59715d5686..3c8722af68 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; @@ -463,8 +464,8 @@ class MogoOCHTaxiModel { } @Override - public void onStateChanged(int state, String reason) { - + public void onStateChanged( int state, String reason ) { + OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( state, reason ); } } @@ -480,7 +481,7 @@ class MogoOCHTaxiModel { if ( mOCHTaxiServiceApi == null ) { mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create( OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN ); } - mOCHTaxiServiceApi.updateOrderStatus( new OCHTaxiOrderStatus( mCurrentOCHOrder.orderNo, orderStatus.getCode() ) ) + mOCHTaxiServiceApi.updateOrderStatus( new OCHTaxiOrderStatus( Utils.getSn(), mCurrentOCHOrder.orderNo, orderStatus.getCode() ) ) .subscribeOn( Schedulers.io() ) .observeOn( AndroidSchedulers.mainThread() ) .subscribe( new SubscribeImpl< BaseData >( RequestOptions.create( mContext ) ) { @@ -522,7 +523,7 @@ class MogoOCHTaxiModel { if ( mOCHTaxiServiceApi == null ) { mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create( OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN ); } - mOCHTaxiServiceApi.queryOrder( new OCHTaxiOrderStatus( orderNo, OCHOrderStatus.None.getCode() ) ) + mOCHTaxiServiceApi.queryOrder( new OCHTaxiOrderStatus( Utils.getSn(), orderNo, OCHOrderStatus.None.getCode() ) ) .subscribeOn( Schedulers.io() ) .observeOn( AndroidSchedulers.mainThread() ) .subscribe( new SubscribeImpl< OCHTaxiOrderResponse2 >( RequestOptions.create( mContext ) ) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse.java index be3e55ad65..f969f4e47a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse.java @@ -29,6 +29,16 @@ class OCHTaxiOrderResponse implements Parcelable { // 站点 public List< OCHTaxiStation > drivingRoutes; + /** + * @param distance + */ + public void decreaseTravelDistance( double distance ) { + travelDistance -= ( ( float ) distance / 1000f ); + if ( travelDistance < 0 ) { + travelDistance = 0; + } + } + public static class OCHTaxiStation implements Parcelable { public String siteId; public String siteName; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderStatus.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderStatus.java index deadfa38a2..061dcd6f79 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderStatus.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderStatus.java @@ -5,14 +5,19 @@ public * @author congtaowang * @since 2021/1/15 * - * 修改网约车-出租车订单状态的数据结构 + * 修改/查询网约车-出租车订单状态的数据结构 */ class OCHTaxiOrderStatus { + public String sn;// 不排除本地没有缓存订单号的情况 public String orderNo; public int orderDispatchType; - public OCHTaxiOrderStatus( String orderNo, int orderDispatchType ) { + + public OCHTaxiOrderStatus( String sn, + String orderNo, + int orderDispatchType ) { + this.sn = sn; this.orderNo = orderNo; this.orderDispatchType = orderDispatchType; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 8ad87aa483..4a60bee679 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -1,21 +1,29 @@ package com.mogo.och.taxi.ui; +import android.location.Location; import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; +import com.mogo.map.MogoLatLng; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.BaseOchFragment; +import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.och.taxi.OCHOrderStatus; import com.mogo.och.taxi.OCHOrderStatusCallback; import com.mogo.och.taxi.R; import com.mogo.och.view.SlidePanelView; +import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.CoordinateUtils; +import com.mogo.utils.TipToast; +import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; public @@ -26,7 +34,10 @@ public * 网约车-出租车UI */ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView, - IMogoStatusChangedListener, IMogoOCHTaxiArriveCallback { + IMogoStatusChangedListener, + IMogoOCHTaxiArriveCallback, + IMogoADASAutoPilotStatusChangedListener, + IMogoCarLocationChangedListener2 { public static final String TAG = "OCHTaxiFragment"; @@ -51,7 +62,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void restartAutopilot() { - // todo 重新开始自动驾驶 + MogoOCHTaxiModel.getInstance().startAutoPilot(); } @Override @@ -63,7 +74,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mDistance = findViewById( R.id.module_och_taxi_order_distance ); initListeners(); - initOrderStatus(); + updateOrderStatus(); if ( MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -80,6 +91,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .getStatusManagerApi() .registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( this ); + OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( this ); + MogoApisHandler.getInstance() + .getApis() + .getRegisterCenterApi() + .registerCarLocationChangedListener( TAG, this ); } @NonNull @@ -113,12 +129,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } } - private void initOrderStatus() { - if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { - mStartStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().startStation ); - mEndStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().endStation ); - mDistance.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance + " km" ); - } + /** + * 初始化订单信息 + */ + private void updateOrderStatus() { + updateOrderBaseStatusInfo(); if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) { Logger.d( TAG, "已经达到终点" ); slidePanelView.setVisibility( View.VISIBLE ); @@ -133,7 +148,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mOrderStatus.setText( "已到达上车地点,等待乘客上车" ); if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { Logger.d( TAG, "乘客已上车" ); - slidePanelView.setVisibility( View.VISIBLE ); + if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) { + slidePanelView.setVisibility( View.VISIBLE ); + } else { + slidePanelView.setVisibility( View.GONE ); + } slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); } } else if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { @@ -143,23 +162,34 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } } + /** + * 更新订单基本信息 + */ + private void updateOrderBaseStatusInfo() { + if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { + mStartStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().startStation ); + mEndStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().endStation ); + mDistance.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance + " km" ); + } + } + @Override public void onArriveAtStartStation() { Logger.d( TAG, "通知达到起点" ); - initOrderStatus(); + updateOrderStatus(); } @Override public void onTheWay2StartStation() { Logger.d( TAG, "去往上车站点" ); - initOrderStatus(); + updateOrderStatus(); } @Override public void onArriveAtEndStation() { Logger.d( TAG, "通知达到终点" ); onAutopilotStatusChanged( false ); - initOrderStatus(); + updateOrderStatus(); MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.ArriveAtEndStation, new OCHOrderStatusCallback() { @Override public void onSuccess( Object data ) { @@ -177,19 +207,23 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态失败2" ); } } ); + MogoApisHandler.getInstance() + .getApis() + .getRegisterCenterApi() + .unregisterCarLocationChangedListener( TAG, this ); } @Override public void onTheWay2EndStation() { Logger.d( TAG, "通知去往终点" ); onAutopilotStatusChanged( true ); - initOrderStatus(); + updateOrderStatus(); } @Override public void onUserArriveAtStartStation() { Logger.d( TAG, "通知乘客已上车" ); - initOrderStatus(); + updateOrderStatus(); } @Override @@ -200,6 +234,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .getStatusManagerApi() .unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null ); + OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( null ); + MogoApisHandler.getInstance() + .getApis() + .getRegisterCenterApi() + .unregisterCarLocationChangedListener( TAG, this ); } @Override @@ -233,24 +272,77 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { MogoOCHTaxiModel.getInstance().startAutoPilot(); - MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true ); - MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() { - @Override - public void onSuccess( Object data ) { - Logger.d( TAG, "更新状态成功" ); - } + } + } - @Override - public void onFail() { - Logger.d( TAG, "更新状态失败" ); - } + @Override + public void onAutoPilotStatusChanged( int status, String reason ) { + Logger.d( TAG, "status = %s, reason = %s", status, reason ); + if ( status == IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING ) { + resetOCHTaxiOrderAutopilotStatus(); + } else { + TipToast.shortTip( reason ); + updateOrderStatus(); + } + } + + /** + * 收到自动驾驶通知的成功状态之后,设置本地状态及服务端状态 + */ + private void resetOCHTaxiOrderAutopilotStatus() { + MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true ); + MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() { + @Override + public void onSuccess( Object data ) { + Logger.d( TAG, "更新状态成功" ); + } + + @Override + public void onFail() { + Logger.d( TAG, "更新状态失败" ); + } - @Override - public void onError() { - Logger.d( TAG, "更新状态失败2" ); - } - } ); + @Override + public void onError() { + Logger.d( TAG, "更新状态失败2" ); + } + } ); + } + + @Override + public void onCarLocationChanged( MogoLatLng latLng ) { + + } + + private Location mLocation; + + @Override + public void onCarLocationChanged2( Location location ) { + OCHTaxiUiController.getInstance().runOnUIThread( () -> { + calculateTravelDistance( location ); + } ); + } + + /** + * 根据位置信息计算当前剩余距离 + * + * @param location + */ + private void calculateTravelDistance( Location location ) { + if ( location == null ) { + return; + } + if ( mLocation == null ) { + mLocation = location; + } + double distance = CoordinateUtils.calculateLineDistance( + location.getLongitude(), location.getLatitude(), + mLocation.getLongitude(), mLocation.getLatitude() + ); + if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { + MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().decreaseTravelDistance( distance ); + updateOrderBaseStatusInfo(); } } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java index 62bd07a80a..2992c439ef 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java @@ -7,6 +7,7 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; +import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.utils.UiThreadHandler; @@ -19,7 +20,7 @@ public * * 控制UI显示 */ -class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { +class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPilotStatusChangedListener { private static final String TAG = "OCHTaxiUiController"; @@ -28,6 +29,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { private int mContainerId; private IMogoOCHTaxiArriveCallback mOCHTaxiArriveCallback; + private IMogoADASAutoPilotStatusChangedListener mAutoPilotStatusChangedListener; private OCHTaxiUiController() { } @@ -94,9 +96,17 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { this.mOCHTaxiArriveCallback = OCHTaxiArriveCallback; } + public void setAutoPilotStatusChangedListener( IMogoADASAutoPilotStatusChangedListener autoPilotStatusChangedListener ) { + this.mAutoPilotStatusChangedListener = autoPilotStatusChangedListener; + } + @Override public void onTheWay2StartStation() { - + runOnUIThread( () -> { + if ( mOCHTaxiArriveCallback != null ) { + mOCHTaxiArriveCallback.onTheWay2StartStation(); + } + } ); } @Override @@ -135,7 +145,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { } ); } - private void runOnUIThread( Runnable executor ) { + public void runOnUIThread( Runnable executor ) { if ( executor == null ) { return; } @@ -146,4 +156,12 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { } } + @Override + public void onAutoPilotStatusChanged( int status, String reason ) { + runOnUIThread( () -> { + if ( mAutoPilotStatusChangedListener != null ) { + mAutoPilotStatusChangedListener.onAutoPilotStatusChanged( status, reason ); + } + } ); + } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index b68ec2476b..5250465a76 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -76,7 +76,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } // 暂时只显示车辆 - if ( isCarType( recognizedListResult.type ) ) { + if ( !isCarType( recognizedListResult.type ) ) { continue; } @@ -113,9 +113,13 @@ class AdasRecognizedResultDrawer extends BaseDrawer { interval -= 25; marker.startSmoothInMs( points, interval ); } + marker.setRotateAngle( ( ( float ) recognizedListResult.heading ) ); + marker.setPosition( recognizedListResult.lat, recognizedListResult.lon ); } else { marker.setPosition( recognizedListResult.lat, recognizedListResult.lon ); } +// marker.setRotateAngle( ( ( float ) recognizedListResult.heading ) ); +// marker.setPosition( recognizedListResult.lat, recognizedListResult.lon ); } showSelfSpeed( mContext, marker, @@ -181,7 +185,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } private int getVrModel() { - return R.raw.carred; + return R.raw.cargrey; } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index bacb0493eb..5bcefe871b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -94,12 +94,12 @@ class BaseDrawer { protected boolean isCarType( int type ) { AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom( type ); - if ( recognizedType != AdasRecognizedType.classIdCar - || recognizedType != AdasRecognizedType.classIdTrafficBus - || recognizedType != AdasRecognizedType.classIdTrafficTruck ) { - return false; + if ( recognizedType == AdasRecognizedType.classIdCar + || recognizedType == AdasRecognizedType.classIdTrafficBus + || recognizedType == AdasRecognizedType.classIdTrafficTruck ) { + return true; } - return true; + return false; } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 5544ee36a2..df2693c468 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -1,22 +1,16 @@ package com.mogo.module.common.drawer; import android.content.Context; -import android.graphics.Color; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoLatLng; -import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; -import com.mogo.map.uicontroller.EnumMapUI; -import com.mogo.map.uicontroller.MapCameraPosition; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.R; import com.mogo.module.common.api.CallChatApi; @@ -151,7 +145,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen // 暂时只显示车辆 if ( TextUtils.isEmpty( cloudRoadData.getSn() ) ) { - if ( isCarType( cloudRoadData.getType() ) ) { + if ( !isCarType( cloudRoadData.getType() ) ) { continue; } } @@ -192,12 +186,12 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen if ( lastPosition != null ) { if ( lastPosition.equals( cloudRoadData ) ) { if ( ( ( int ) cloudRoadData.getSpeed() ) == 0 ) { - MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition(); - if ( position != null ) { - marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() ); - } else { - marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() ); - } +// MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition(); +// if ( position != null ) { +// marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() ); +// } else { +// } + marker.setRotateAngle( ( ( float ) cloudRoadData.getHeading() ) ); } Logger.d( TAG, "保持位置 - %s", uniqueKey ); // marker.setPosition( lastPosition.getLat(), lastPosition.getLon() ); @@ -222,12 +216,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, interval2 ); } } else { - MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition(); - if ( position != null ) { - marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() ); - } else { - marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() ); - } + marker.setRotateAngle( ( float ) cloudRoadData.getHeading() ); marker.setPosition( cloudRoadData.getLat(), cloudRoadData.getLon() ); } showSelfSpeed( mContext, marker, cloudRoadData.getSpeed(), mIsVrMode ); @@ -349,9 +338,9 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen private int getVrModel( CloudRoadData data ) { switch ( data.getFromType() ) { case CloudRoadData.FROM_ADAS: -// return R.raw.taxi; + return R.raw.cargrey; case CloudRoadData.FROM_ROAD_UNIT: -// return R.raw.bus; + return R.raw.cargreen; case CloudRoadData.FROM_MY_LOCATION: default: return R.raw.carblue; diff --git a/modules/mogo-module-common/src/main/res/raw/cargreen.n3d b/modules/mogo-module-common/src/main/res/raw/cargreen.n3d new file mode 100644 index 0000000000..4e222bd433 Binary files /dev/null and b/modules/mogo-module-common/src/main/res/raw/cargreen.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/cargrey.n3d b/modules/mogo-module-common/src/main/res/raw/cargrey.n3d new file mode 100644 index 0000000000..4483a76e22 Binary files /dev/null and b/modules/mogo-module-common/src/main/res/raw/cargrey.n3d differ