@@ -1,6 +1,5 @@
package com.mogo.eagle.core.function.business.identify
import android.util.Log
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.map.MogoLatLng
import com.mogo.eagle.core.data.map.MogoLocation
@@ -9,8 +8,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuStatusListener
import com.mogo.eagle.core.function.business.routeoverlay.PredictionOverlayDrawer
import com.mogo.eagle.core.function.business.routeoverlay.PredictionOverlayDrawer2
import com.mogo.eagle.core.function.business.routeoverlay.PredictionOverlayDrawer3
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getLocationHeading
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getWgs84Lat
@@ -19,8 +16,9 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.map.MogoMap
import com.mogo.map.MogoMap.Companion.mapInstance
import com.mogo.map.identify.MogoIdentifyManager
import com.mogo.map.utils.LocationUtils
import com.zhjt.mogo.adas.data.Adas.TrackedObjectClassID
import com.zhjt.mogo.adas.data.Adas.TrackedObjectType
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
@@ -37,6 +35,21 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
private val TAG = " MapIdentifySubscriber "
private val typeMap : HashMap < TrackedObjectType , TrackedObjectClassID > by lazy {
hashMapOf < TrackedObjectType , TrackedObjectClassID > ( ) . apply {
put ( TrackedObjectType . TYPE _PEDESTRIAN , TrackedObjectClassID . Person )
put ( TrackedObjectType . TYPE _MOTOR , TrackedObjectClassID . MotorCycle )
put ( TrackedObjectType . TYPE _BICYCLE , TrackedObjectClassID . Bicycle )
put ( TrackedObjectType . TYPE _CAR , TrackedObjectClassID . Car )
put ( TrackedObjectType . TYPE _TRUCK , TrackedObjectClassID . Truck )
put ( TrackedObjectType . TYPE _BUS , TrackedObjectClassID . Bus )
put ( TrackedObjectType . TYPE _WARNINGTRIANGLE , TrackedObjectClassID . WarningTriangle )
put ( TrackedObjectType . TYPE _ROADWORK _OCCUPY _0501 , TrackedObjectClassID . RoadWork _occupy _0501 )
put ( TrackedObjectType . TYPE _ROADWORK _BREAK _0502 , TrackedObjectClassID . RoadWork _break _0502 )
put ( TrackedObjectType . TYPE _ROAD _CONGESTION , TrackedObjectClassID . ROAD _CONGESTION )
}
}
init {
onCrate ( )
}
@@ -102,24 +115,24 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
probability1 = preObj . predictionTrajectoryList [ 0 ] . predictionProbability
probability2 = preObj . predictionTrajectoryList [ 1 ] . predictionProbability
CallerAutopilotIdentifyListenerManager . invokeProbabilityChanged ( probability1 , probability2 )
if ( probability1 >= probability2) {
MogoIdentifyManager. getInstance( ) . updateGps( location1!! , MogoMap. SMALL _PRED _MAP)
largeType = 2
} else {
MogoIdentifyManager. getInstance( ) . updateGps( location2!! , MogoMap. SMALL _PRED _MAP)
largeType = 3
}
PredictionOverlayDrawer2. getInstance( ) . drawPredictionList( carPoiList1, getLocationHeading( ) , false , 2 , largeType)
PredictionOverlayDrawer3. getInstance( ) . drawPredictionList( carPoiList2, getLocationHeading( ) , false , 3 , largeType)
MogoIdentifyManager. getInstance( ) . updateGps( location1!! , MogoMap. SMALL _PRED _MAP2)
MogoIdentifyManager. getInstance( ) . updateGps( location2!! , MogoMap. SMALL _PRED _MAP3)
// if ( probability1 >= probability2) {
//// MogoIdentifyManager. getInstance(). updateGps( location1!!, MogoMap. SMALL_PRED_MAP)
// largeType = 2
// } else {
//// MogoIdentifyManager. getInstance(). updateGps( location2!!, MogoMap. SMALL_PRED_MAP)
// largeType = 3
// }
// PredictionOverlayDrawer2. getInstance(). drawPredictionList( carPoiList1, getLocationHeading(), false, 2, largeType)
// PredictionOverlayDrawer3. getInstance(). drawPredictionList( carPoiList2, getLocationHeading(), false, 3, largeType)
// MogoIdentifyManager. getInstance(). updateGps( location1!!, MogoMap. SMALL_PRED_MAP2)
// MogoIdentifyManager. getInstance(). updateGps( location2!!, MogoMap. SMALL_PRED_MAP3)
} else {
if ( preObj . predictionTrajectoryList . isNullOrEmpty ( ) || mogoMap == null ) return @forEach
if ( preObj . predictionTrajectoryList . isNullOrEmpty ( ) || isUnKnownType ( preObj . classtype ) || mogoMap == null ) return @forEach
point = preObj . predictionTrajectoryList [ 0 ] . trajectoryPointsList [ 0 ]
arr = mogoMap . switchData ( point . x , point . y , false )
arr ?. let { lonLatArr ->
val distance = com . mogo . eagle . core . utilcode . util . LocationUtils . getDistance ( getWgs84Lat ( ) , getWgs84Lon ( ) , lonLatArr [ 1 ] , lonLatArr [ 0 ] )
if ( distance > 25 ) return @forEach
if ( distance > 30 ) return @forEach
}
preObj . predictionTrajectoryList [ 0 ] . trajectoryPointsList . forEachIndexed { index , point ->
if ( index > 9 && index % 2 == 0 ) { // 步长为2, 减少点
@@ -140,6 +153,12 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
}
}
private fun isUnKnownType ( classType : Int ) : Boolean {
val type : TrackedObjectType = TrackedObjectType . forNumber ( classType ) ?: return true
var classID : TrackedObjectClassID ? = typeMap [ type ] ?: return true
return false
}
fun renderAiCloudResult ( cloudData : List < SocketDownData . CloudRoadDataProto > , mapInstance : String = MogoMap . DEFAULT ) {
try {
ThreadUtils . getSinglePool ( ) . execute {