fix bug of track draw
This commit is contained in:
@@ -45,6 +45,10 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber,
|
||||
if (FunctionBuildConfig.isDrawIdentifyData) {
|
||||
ThreadUtils.getSinglePool().execute {
|
||||
IdentifyFactory.renderAdasRecognizedResult(trafficData)
|
||||
val pl = MessagePad.PlanningObject.newBuilder().setUuid(127).build()
|
||||
val list = mutableListOf<MessagePad.PlanningObject>()
|
||||
list.add(pl)
|
||||
IdentifyFactory.renderPlanningWarningObj(list)
|
||||
}
|
||||
} else {
|
||||
IdentifyFactory.clearOldMarker()
|
||||
|
||||
@@ -42,12 +42,14 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener {
|
||||
/**
|
||||
* 记录每次实际绘制的交通元素UUID
|
||||
*/
|
||||
@SuppressLint("NewApi")
|
||||
private val trafficDataUuidList = ArraySet<String>()
|
||||
|
||||
/**
|
||||
* 过滤后的数据集合
|
||||
*/
|
||||
private val mFilterTrafficData = ArrayList<TrackedObject>()
|
||||
@SuppressLint("NewApi")
|
||||
private val mFilterTrafficData = HashMap<String,TrackedObject>()
|
||||
|
||||
/**
|
||||
* planning 感知物预警缓存,用于重置color状态
|
||||
@@ -68,7 +70,7 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener {
|
||||
val trackObj = mMarkersCaches[trackId]
|
||||
trackObj?.let {
|
||||
colorTrafficData[trackId] = PlanningTrack(
|
||||
"#FFBCB239",
|
||||
"#BCB239FF",
|
||||
CallerAutoPilotStatusListenerManager.getCurWgs84SatelliteTime()
|
||||
)
|
||||
}
|
||||
@@ -128,7 +130,7 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener {
|
||||
*
|
||||
* @return 过滤后的数据集合
|
||||
*/
|
||||
private fun filterTrafficData(trafficData: List<TrackedObject>): ArrayList<TrackedObject> {
|
||||
private fun filterTrafficData(trafficData: List<TrackedObject>): HashMap<String,TrackedObject> {
|
||||
mFilterTrafficData.clear()
|
||||
trafficDataUuidList.clear()
|
||||
for (data in trafficData) {
|
||||
@@ -154,7 +156,7 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener {
|
||||
colorTrafficData.remove(uuid)
|
||||
}
|
||||
}
|
||||
mFilterTrafficData.add(temp)
|
||||
mFilterTrafficData[uuid] = temp
|
||||
}
|
||||
mMarkersCaches[uuid] = temp
|
||||
trafficDataUuidList.add(uuid)
|
||||
@@ -165,6 +167,7 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener {
|
||||
/**
|
||||
* 清除旧的 marker 数据
|
||||
*/
|
||||
@SuppressLint("NewApi")
|
||||
override fun clearOldMarker() {
|
||||
for (uuid in trafficDataUuidList) {
|
||||
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
|
||||
|
||||
@@ -15,13 +15,11 @@ import com.mogo.eagle.core.utilcode.geometry.S2CellId;
|
||||
import com.mogo.eagle.core.utilcode.geometry.S2LatLng;
|
||||
import com.mogo.map.MogoMarkerManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
@@ -50,15 +48,20 @@ public class TrackManager {
|
||||
/**
|
||||
* 记录每次实际绘制的交通元素UUID
|
||||
*/
|
||||
private final List<String> trafficDataUuid = Collections.synchronizedList(new ArrayList<>());
|
||||
@SuppressLint("NewApi")
|
||||
private final HashMap<String, Long> trafficDataUuid = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 过滤后的数据集合
|
||||
*/
|
||||
private final ArrayList<MessagePad.TrackedObject> mFilterTrafficData = new ArrayList<>();
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public synchronized ArrayList<MessagePad.TrackedObject> filterTrafficData(List<MessagePad.TrackedObject> trafficData) {
|
||||
private final HashMap<String, MessagePad.TrackedObject> mFilterTrafficData = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 过滤后的数据集合
|
||||
*/
|
||||
@SuppressLint("NewApi")
|
||||
public synchronized HashMap<String, MessagePad.TrackedObject> filterTrafficData(List<MessagePad.TrackedObject> trafficData) {
|
||||
//清空上次返回数据,做到缓存复用
|
||||
mFilterTrafficData.clear();
|
||||
//进入过滤机制的感知物体,首先从缓存队列中进行查找 uuid
|
||||
@@ -99,10 +102,10 @@ public class TrackManager {
|
||||
trackObj = new TrackObj(data);
|
||||
}
|
||||
}
|
||||
mFilterTrafficData.add(trackObj.getCache());
|
||||
mFilterTrafficData.put(uuid, trackObj.getCache());
|
||||
cellIdCaches.forcePut(uuid, trackObj.getCellIdPos());
|
||||
mMarkersCaches.put(uuid, trackObj);
|
||||
trafficDataUuid.add(uuid);
|
||||
trafficDataUuid.put(uuid, System.currentTimeMillis());
|
||||
}
|
||||
return mFilterTrafficData;
|
||||
}
|
||||
@@ -121,9 +124,10 @@ public class TrackManager {
|
||||
}
|
||||
|
||||
//清除缓存,删除marker
|
||||
Iterator it = trafficDataUuid.iterator();
|
||||
Iterator<Map.Entry<String, Long>> it = trafficDataUuid.entrySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
String key = (String) it.next();
|
||||
Map.Entry<String, Long> next = it.next();
|
||||
String key = next.getKey();
|
||||
it.remove();
|
||||
removeKey(key);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user