From 4f98be373d39bd8531b953f836c16f87e0e2a0fd Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 20 Jun 2022 16:12:58 +0800 Subject: [PATCH] fix bug of delete maker --- .../function/map/identify/IdentifyOriginDataDrawer.kt | 2 ++ .../eagle/core/function/map/identify/TrackManager.java | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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 51c8ad06bf..76084e0da4 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 @@ -111,6 +111,8 @@ class IdentifyOriginDataDrawer : Identify { trafficDataUuidList.forEach(Consumer { uuid: String -> mMarkersCaches.remove(uuid) algoCache.remove(uuid) + MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) + .removeMarker(uuid) }) val filterList = filterTrafficData(resultList) if (filterList.size > 0) { 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 fea37135ee..e13df39911 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 @@ -5,6 +5,7 @@ import android.util.ArrayMap; import android.util.Log; import androidx.annotation.RequiresApi; +import androidx.collection.ArraySet; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; @@ -17,6 +18,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; import mogo.telematics.pad.MessagePad; @@ -49,7 +51,7 @@ public class TrackManager { /** * 记录每次实际绘制的交通元素UUID */ - private final ArrayList trafficDataUuidList = new ArrayList<>(); + private final Set trafficDataUuidList = new ArraySet<>(); /** * 过滤后的数据集合 @@ -59,6 +61,7 @@ public class TrackManager { public ArrayList filterTrafficData(List trafficData) { //清空上次返回数据,做到缓存复用 mFilterTrafficData.clear(); + trafficDataUuidList.clear(); //进入过滤机制的感知物体,首先从缓存队列中进行查找 uuid for (MessagePad.TrackedObject data : trafficData) { @@ -89,6 +92,7 @@ public class TrackManager { } cellIdCaches.forcePut(uuid, trackObj.getCellIdPos()); mMarkersCaches.put(uuid, trackObj); + Log.d("hy uuid : " + uuid, " 显示物体,塞入set"); trafficDataUuidList.add(uuid); } //todo 将上次没被删除掉物体加入集合,造成延迟删除,对运动物体不友好 @@ -121,8 +125,11 @@ public class TrackManager { } } trafficDataUuidList.forEach(uuid -> { + Log.d("hy uuid : " + uuid, " 移除物体"); mMarkersCaches.remove(uuid); cellIdCaches.remove(uuid); + MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) + .removeMarker(uuid); }); //todo bus存在时间回溯,将id重置,会有id复用问题,导致鹰眼展示元素缺少 // Iterator it = mMarkersCaches.keySet().iterator();