diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt new file mode 100644 index 0000000000..76c3469487 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt @@ -0,0 +1,5 @@ +package com.mogo.och.bus.passenger.callback + +interface IDistanceTimeCallback { + fun setDistancecAndTime(meters:Long , timeInSecond:Long ) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index a315df8aba..a6d9a2238d 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -16,7 +16,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.util.CoordinateTransform import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils @@ -24,11 +26,14 @@ import com.mogo.och.bus.passenger.bean.LoopInfo import com.mogo.och.bus.passenger.bean.response.* import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback +import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback +import com.mogo.och.bus.passenger.constant.BusPassengerConst.Companion.Charter_AVERAGE_SPEED import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager import com.mogo.och.bus.passenger.net.BusPassengerServiceManager import com.mogo.och.common.module.biz.constant.LoginStatusManager import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.SystemStatusInfo @@ -67,11 +72,15 @@ object CharterPassengerModel { // 轨迹信息 用来启动自动驾驶 private var locusInfo: LocusResponse.LocusInfo? = null + // 轨迹点、底盘透传的 + private val mRoutePoints: MutableList = ArrayList() private var orderStatus:OrderStatusEnum = OrderStatusEnum.NoOrderUnuse private var orderStatusChangeListener:IOrderStatusChangeListener?=null + private var iDistanceTimeCallback: IDistanceTimeCallback?=null + fun init() { initListeners() queryLoginStatus() @@ -111,6 +120,10 @@ object CharterPassengerModel { mControllerStatusCallbackMap[tag] = callback } + fun setiDistanceTimeCallback(distanceTimeCallback: IDistanceTimeCallback?){ + this.iDistanceTimeCallback = distanceTimeCallback + } + /** * 启动轮询查询司机登录状态 */ @@ -185,15 +198,22 @@ object CharterPassengerModel { private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener = object : IMoGoPlanningRottingListener { override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { - CallerLogger.d( - M_BUS_P + TAG, + CallerLogger.d(M_BUS_P + TAG, "onAutopilotRotting = ${GsonUtil.jsonFromObject(globalPathResp)}" ) globalPathResp?.wayPointsList?.let { - startCalculateDistanceLoop() + if(it.size>0) { + updateRoutePoints(it) + } } } } + fun updateRoutePoints(routePoints: List?) { + mRoutePoints.clear() + val latLngModels = CoordinateCalculateRouteUtil + .coordinateConverterWgsToGcjLocations(mContext, routePoints) + mRoutePoints.addAll(latLngModels) + } fun setStatusChangeListener(orderStatusChangeListener:IOrderStatusChangeListener?){ this.orderStatusChangeListener = orderStatusChangeListener } @@ -433,7 +453,7 @@ object CharterPassengerModel { } /** - * 结束时间校准轮训 + * 结束启动路距计算 */ private fun endCalculateDistanceLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGDISTANCE) @@ -443,7 +463,45 @@ object CharterPassengerModel { * 查询车辆状态 判断订单是否结束、是否显示结束业务 */ private fun calculateDistance() { - // TODO: 启动轨迹计算 + mLocation?.let { + // 启动轨迹计算 + //当前站在轨迹中对应的点 + val currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( + 0, mRoutePoints, it.latitude, it.longitude + ) + //要前往的站在轨迹中对应的点 + var nextRouteIndex:Int = mRoutePoints.size-1 + orderInfo?.let { + val wgS84ToGCJ02 = CoordinateTransform.WGS84ToGCJ02(it.wgs84Lon, it.wgs84Lat) + nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( + currentRouteIndex, mRoutePoints, wgS84ToGCJ02[0], wgS84ToGCJ02[1] + ) + } + var lastSumLength = 0f + if(currentRouteIndex 0) { diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml index 7510a572b2..19cd21099e 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml @@ -32,9 +32,14 @@ android:id="@+id/m1_order_early_end" android:visibility="gone" layout="@layout/m1_order_early_end"/> + diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt index c4439d9d33..8af7376b7b 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt @@ -16,6 +16,9 @@ class BusPassengerConst { const val LOOP_LINE_1S = 1 * 1000L const val LOOP_DELAY = 100L + //M1的平均里程:15km/h + const val Charter_AVERAGE_SPEED = 15 + // 订单总里程 const val BUS_SP_KEY_ORDER_SUM_DIS = "BUS_SP_KEY_ORDER_SUM_DIS"