fix bug of model and add func obu track

This commit is contained in:
zhongchao
2022-08-25 11:58:30 +08:00
parent 6b3881ce60
commit d2c11480be
13 changed files with 302 additions and 113 deletions

View File

@@ -8,6 +8,7 @@ import android.text.TextUtils
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.data.traffic.threatLevelColor
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import com.mogo.map.MogoMarkerManager
@@ -17,19 +18,19 @@ import com.mogo.module.common.constants.DataTypes
import java.util.concurrent.ConcurrentHashMap
/**
* @author xiaoyuzhou
* @date 2021/8/18 11:12 上午
* 交通元素 2D\3D绘制
* 此类用于obu/v2x预警绘制交通元素 2D\3D绘制
* obu:与其进行调试单独展示与debugview上感知开关相关联
* v2x:绘制云端预警marker不会做感知控制管理后续根据注解的方式来控制v2x业务
*/
@SuppressLint("StaticFieldLeak")
object TrafficMarkerDrawer {
private val TAG = "TrafficMarkerDrawer"
private const val TAG = "TrafficMarkerDrawer"
private var mContext: Context? = null
// 动画持续时间
private val stepTime = 150L
private const val stepTime = 150L
// 维护Obu识别的他车集合
private val mTrafficMap = ConcurrentHashMap<String, TrafficData>()
@@ -57,15 +58,6 @@ object TrafficMarkerDrawer {
mDrawerHandler.sendEmptyMessageDelayed(1, 0L)
}
/**
* 添加识别的数据
*/
fun addTrafficInfo(trafficData: TrafficData) {
if (trafficData.uuid != null) {
mTrafficMap[trafficData.uuid!!] = trafficData
}
}
/**
* 更新识别数据,V2V预警的时候需要修改车辆颜色
*/
@@ -159,8 +151,8 @@ object TrafficMarkerDrawer {
*/
private fun drawObuRecognizedDataMarker(trafficData: TrafficData) {
CallerLogger.d(
TAG,
"trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel
TAG,
"trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel
)
if (trafficData.type != null) {
val resId: Int = trafficData.type.traffic3DIconId
@@ -177,30 +169,18 @@ object TrafficMarkerDrawer {
.icon3DRes(resId)
.rotate(trafficData.heading.toFloat())
.position(
com.mogo.eagle.core.data.map.MogoLatLng(
trafficData.lat,
trafficData.lon
)
com.mogo.eagle.core.data.map.MogoLatLng(
trafficData.lat,
trafficData.lon
)
)
if (trafficData.type != TrafficTypeEnum.TYPE_TRAFFIC_ID_SPECIAL_VEHICLE) {
// 修改颜色
when (trafficData.threatLevel) {
1 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#D8D8D8FF")
}
2 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#FFD53EFF")
}
3 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#FF3C45FF")
}
else -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#D8D8D8FF")
}
}
mMarkersCaches[trafficData.uuid]?.setAnchorColor(trafficData.threatLevelColor())
}
val marker = MogoMarkerManager.getInstance(mContext).addMarker(DataTypes.TYPE_MARKER_OBU_DATA, options)
val marker = MogoMarkerManager.getInstance(mContext)
.addMarker(DataTypes.TYPE_MARKER_OBU_DATA, options)
// 缓存3D资源
mMarkerCachesResMd5Values[resIdVal] = marker.markerResName
@@ -215,39 +195,25 @@ object TrafficMarkerDrawer {
* 带动画的修改Marker
*/
private fun changeDynamicMarker(
marker: IMogoMarker,
trafficData: TrafficData
marker: IMogoMarker,
trafficData: TrafficData
) {
CallerLogger.d(
TAG,
"trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel
TAG,
"trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel
)
if (trafficData.type != TrafficTypeEnum.TYPE_TRAFFIC_ID_SPECIAL_VEHICLE) {
// 修改颜色
when (trafficData.threatLevel) {
1 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#D8D8D8FF")
}
2 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#FFD53EFF")
}
3 -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#FF3C45FF")
}
else -> {
mMarkersCaches[trafficData.uuid]?.setAnchorColor("#D8D8D8FF")
}
}
mMarkersCaches[trafficData.uuid]?.setAnchorColor(trafficData.threatLevelColor())
}
try {
marker.addDynamicAnchorPosition(
com.mogo.eagle.core.data.map.MogoLatLng(
trafficData.lat,
trafficData.lon
),
trafficData.heading.toFloat(),
stepTime
com.mogo.eagle.core.data.map.MogoLatLng(
trafficData.lat,
trafficData.lon
),
trafficData.heading.toFloat(),
stepTime
)
} catch (e: Exception) {
e.printStackTrace()