[m1]
[1.1.2] [实时计算到终点距离]
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package com.mogo.och.bus.passenger.callback
|
||||
|
||||
interface IDistanceTimeCallback {
|
||||
fun setDistancecAndTime(meters:Long , timeInSecond:Long )
|
||||
}
|
||||
@@ -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<MogoLocation> = 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<MessagePad.Location?>?) {
|
||||
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<nextRouteIndex){//
|
||||
val subList = mRoutePoints.subList(currentRouteIndex, nextRouteIndex)
|
||||
val middlePoingDistancee = CoordinateCalculateRouteUtil.calculateRouteSumLength(subList)
|
||||
val lastPoints = mRoutePoints.get(currentRouteIndex)
|
||||
lastSumLength = CoordinateUtils.calculateLineDistance(
|
||||
lastPoints.longitude, lastPoints.latitude,
|
||||
it.longitude, it.latitude
|
||||
)+middlePoingDistancee
|
||||
}else{
|
||||
val lastPoints = mRoutePoints.get(nextRouteIndex)
|
||||
lastSumLength = CoordinateUtils.calculateLineDistance(
|
||||
lastPoints.longitude, lastPoints.latitude,
|
||||
it.longitude, it.latitude
|
||||
)
|
||||
}
|
||||
val lastTime: Double = lastSumLength / Charter_AVERAGE_SPEED * 3.6 //秒
|
||||
|
||||
CallerLogger.d(
|
||||
SceneConstant.M_BUS_P + "calculateDistance",
|
||||
"---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
|
||||
+ " thread = " + Thread.currentThread().name
|
||||
)
|
||||
iDistanceTimeCallback?.setDistancecAndTime(lastSumLength.toLong(),lastTime.toLong())
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.MainFragment
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
@@ -12,12 +13,13 @@ import java.util.*
|
||||
|
||||
class BusPassengerPresenter(view: MainFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<MainFragment?>(view),
|
||||
IBusPassengerControllerStatusCallback {
|
||||
IBusPassengerControllerStatusCallback, IDistanceTimeCallback {
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.init()
|
||||
// 定位监听
|
||||
CharterPassengerModel.setControllerStatusCallback(TAG,this)
|
||||
CharterPassengerModel.setiDistanceTimeCallback(this)
|
||||
//BusPassengerModel.setMoGoAutopilotPlanningListener(this)
|
||||
|
||||
}
|
||||
@@ -25,6 +27,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CharterPassengerModel.setControllerStatusCallback(TAG,null)
|
||||
CharterPassengerModel.setiDistanceTimeCallback(null)
|
||||
}
|
||||
private fun setSpeed(speed:Float){
|
||||
UiThreadHandler.post {
|
||||
@@ -47,7 +50,7 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
/**
|
||||
* 计算剩余距离和剩余时间
|
||||
*/
|
||||
fun routePlanningToNextStationChanged(meters: Long, timeInSecond: Long) {
|
||||
override fun setDistancecAndTime(meters: Long, timeInSecond: Long) {
|
||||
var dis: String? = "0"
|
||||
var disUnit = "KM"
|
||||
if (meters > 0) {
|
||||
|
||||
@@ -32,9 +32,14 @@
|
||||
android:id="@+id/m1_order_early_end"
|
||||
android:visibility="gone"
|
||||
layout="@layout/m1_order_early_end"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/m1_order_noorder"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
layout="@layout/m1_order_noorder"/>
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user