fix bug of track draw

This commit is contained in:
zhongchao
2022-07-04 16:28:30 +08:00
parent 8307cd0148
commit 4809f5af70
7 changed files with 43 additions and 28 deletions

View File

@@ -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()

View File

@@ -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())

View File

@@ -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);
}

View File

@@ -7,6 +7,7 @@ import com.mogo.map.overlay.MogoPolylineOptions;
import com.mogo.map.uicontroller.IMogoMapUIController;
import java.util.ArrayList;
import java.util.HashMap;
import mogo.telematics.pad.MessagePad;
@@ -47,7 +48,7 @@ public interface IMogoMap {
*
* @param optionsArrayList 锚点集合
*/
void updateBatchMarkerPosition(ArrayList<MessagePad.TrackedObject> optionsArrayList);
void updateBatchMarkerPosition(HashMap<String,MessagePad.TrackedObject> optionsArrayList);
/**
* 添加感知使用到的3d模型

View File

@@ -6,6 +6,7 @@ import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.traffic.TrafficData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,7 +42,7 @@ public interface IMogoMarkerManager {
* 批量更新锚点位置
* @param optionsArrayList 锚点集合
*/
void updateBatchMarkerPosition(ArrayList<MessagePad.TrackedObject> optionsArrayList);
void updateBatchMarkerPosition(HashMap<String,MessagePad.TrackedObject> optionsArrayList);
/**
* 添加感知使用到的3d模型

View File

@@ -1,5 +1,6 @@
package com.mogo.map;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Point;
@@ -31,6 +32,7 @@ import com.zhidaoauto.map.sdk.open.view.MapAutoView;
import com.zhidaoauto.map.sdk.open.view.MapAutoViewHelper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import mogo.telematics.pad.MessagePad;
@@ -99,21 +101,20 @@ public class AMapWrapper implements IMogoMap {
return mogoMarker;
}
@SuppressLint("NewApi")
@Override
public void updateBatchMarkerPosition(ArrayList<MessagePad.TrackedObject> optionsArrayList) {
public void updateBatchMarkerPosition(HashMap<String, MessagePad.TrackedObject> optionsArrayList) {
if (!checkAMap()) {
return;
}
ArrayList<MarkerSimpleData> markerOptionsArrayList = new ArrayList<>();
for (MessagePad.TrackedObject mogoMarkerOptions : optionsArrayList) {
MarkerSimpleData markerOptions = ObjectUtils.fromTrafficData(mogoMarkerOptions);
if (markerOptions == null) {
CallerLogger.INSTANCE.e(TAG, "marker参数为空");
break;
optionsArrayList.forEach((s, trackedObject) -> {
MarkerSimpleData markerOptions = ObjectUtils.fromTrafficData(trackedObject);
if (markerOptions != null) {
markerOptionsArrayList.add(markerOptions);
}
markerOptionsArrayList.add(markerOptions);
}
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList,false,8.0f,1,100,0);
});
MarkerHelper.INSTANCE.updateBatchMarkerPositon(markerOptionsArrayList, false, 8.0f, 1, 100, 1);
}
@Override

View File

@@ -9,6 +9,7 @@ import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.marker.MogoMarkersHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -69,7 +70,7 @@ public class MogoMarkerManager implements IMogoMarkerManager {
}
@Override
public void updateBatchMarkerPosition(ArrayList<MessagePad.TrackedObject> optionsArrayList) {
public void updateBatchMarkerPosition(HashMap<String,MessagePad.TrackedObject> optionsArrayList) {
try {
MogoMap.getInstance().getMogoMap().updateBatchMarkerPosition(optionsArrayList);
} catch (Exception e) {