diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/Identify.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/Identify.kt index f66e8b1243..9a6f593406 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/Identify.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/Identify.kt @@ -5,9 +5,7 @@ import mogo.telematics.pad.MessagePad.TrackedObject interface Identify { - fun renderPlanningWarningObj(planningObjects: List?){ - - } + fun renderPlanningWarningObj(planningObjects: List?) fun renderAdasRecognizedResult(resultList: List?) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyBeautifyDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyBeautifyDataDrawer.kt index 928a999498..7206c6fcc8 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyBeautifyDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyBeautifyDataDrawer.kt @@ -17,6 +17,10 @@ class IdentifyBeautifyDataDrawer : Identify { private const val TAG = "IdentifyDataDrawer" } + override fun renderPlanningWarningObj(planningObjects: List?) { + TrackManager.getInstance().renderPlanningWarningObj(planningObjects) + } + /** * 渲染 adas 识别的数据 * diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt index 041d8f2e01..b6a972fe95 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/IdentifyOriginDataDrawer.kt @@ -154,11 +154,6 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener { //首次过来的数据不添加,首次未添加的感知物在调用完绘制方法后再塞入cache map val cacheData = mMarkersCaches[uuid] if (cacheData != null) { -// if (data.speed < 0.5) { -// temp = data.toBuilder().setHeading(cacheData.heading) -// .setLongitude(cacheData.longitude) -// .setLatitude(cacheData.latitude).build() -// } if (colorTrafficData.containsKey(uuid)) { val planningTrack = colorTrafficData[uuid] if (!timeOut(planningTrack!!.time)) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java index 8ad1d08d11..87200845d9 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java @@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.map.identify; import android.annotation.SuppressLint; import android.os.Build; -import android.util.Log; import androidx.annotation.RequiresApi; @@ -11,6 +10,7 @@ import com.google.common.collect.HashBiMap; import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.enums.TrafficTypeEnum; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.geometry.S2CellId; import com.mogo.eagle.core.utilcode.geometry.S2LatLng; import com.mogo.map.MogoMarkerManager; @@ -35,6 +35,9 @@ public class TrackManager { public static double LIMIT_SPEED = 0.45; + private TrackManager() { + } + /** * marker缓存队列 */ @@ -57,6 +60,42 @@ public class TrackManager { @SuppressLint("NewApi") private final HashMap mFilterTrafficData = new HashMap<>(); + /** + * planning 感知物预警缓存,用于重置color状态 + */ + private final ConcurrentHashMap colorTrafficData = new ConcurrentHashMap<>(); + + @SuppressLint("NewApi") + public synchronized void renderPlanningWarningObj(List planningObjects) { + colorTrafficData.clear(); + //处于美化模式或者自动驾驶状态下展示 + if (FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData || CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == 2) { + if (planningObjects == null) { + return; + } + planningObjects.forEach(planningObj -> { + String trackId = "" + planningObj.getUuid(); + if (mMarkersCaches.containsKey(trackId)) { + TrackObj trackObj = mMarkersCaches.get(trackId); + if (trackObj == null) { + return; + } + if (planningObj.getType() == 0) { + colorTrafficData.put(trackId, new PlanningTrack( + "#D65D5AFF", + CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84SatelliteTime() + )); + } else if (planningObj.getType() == 1) { + colorTrafficData.put(trackId, new PlanningTrack( + "#E4DD94FF", + CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84SatelliteTime() + )); + } + } + }); + } + } + /** * 过滤后的数据集合 */ @@ -71,6 +110,17 @@ public class TrackManager { } String uuid = "" + data.getUuid(); TrackObj trackObj = mMarkersCaches.get(uuid); + + // 判断物体是否与预警信息 + if (colorTrafficData.containsKey(uuid)) { + PlanningTrack planningTrack = colorTrafficData.get(uuid); + if (planningTrack != null && !timeOut(planningTrack.getTime())) { + data = data.toBuilder().setColor(planningTrack.getColor()).build(); + } else { + colorTrafficData.remove(uuid); + } + } + if (trackObj != null) { trackObj.updateObj(data); } else { @@ -80,7 +130,6 @@ public class TrackManager { // 融合逻辑 : 判断是否有重合元素 if (cellIdCaches.containsValue(pos)) { String findSameValue = cellIdCaches.inverse().get(pos); - Log.d("hy uuid : " + findSameValue, " 与新感知物 : " + uuid + "相同"); //uuid处理 data = data.toBuilder().setUuid(Integer.parseInt(findSameValue)).build(); TrackObj cacheTrack = mMarkersCaches.get(findSameValue); @@ -102,6 +151,7 @@ public class TrackManager { trackObj = new TrackObj(data); } } + mFilterTrafficData.put(uuid, trackObj.getCache()); cellIdCaches.forcePut(uuid, trackObj.getCellIdPos()); mMarkersCaches.put(uuid, trackObj); @@ -146,5 +196,9 @@ public class TrackManager { mMarkersCaches.forEach((uuid, trackObj) -> removeKey(uuid)); } + private Boolean timeOut(Double time) { + long duration = (long) (CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84SatelliteTime() * 1000) - (long) (time * 1000); + return duration >= 500; + } }