diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt index df3a0a074f..a16bec91f9 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MapIdentifySubscriber.kt @@ -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() + list.add(pl) + IdentifyFactory.renderPlanningWarningObj(list) } } else { IdentifyFactory.clearOldMarker() 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 31900bad8b..b7b7d2fd09 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 @@ -42,12 +42,14 @@ class IdentifyOriginDataDrawer : Identify, IMoGoAutopilotStatusListener { /** * 记录每次实际绘制的交通元素UUID */ + @SuppressLint("NewApi") private val trafficDataUuidList = ArraySet() /** * 过滤后的数据集合 */ - private val mFilterTrafficData = ArrayList() + @SuppressLint("NewApi") + private val mFilterTrafficData = HashMap() /** * 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): ArrayList { + private fun filterTrafficData(trafficData: List): HashMap { 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()) 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 71fa51821d..8ad1d08d11 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 @@ -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 trafficDataUuid = Collections.synchronizedList(new ArrayList<>()); + @SuppressLint("NewApi") + private final HashMap trafficDataUuid = new HashMap<>(); /** * 过滤后的数据集合 */ - private final ArrayList mFilterTrafficData = new ArrayList<>(); - @SuppressLint("NewApi") - public synchronized ArrayList filterTrafficData(List trafficData) { + private final HashMap mFilterTrafficData = new HashMap<>(); + + /** + * 过滤后的数据集合 + */ + @SuppressLint("NewApi") + public synchronized HashMap filterTrafficData(List 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> it = trafficDataUuid.entrySet().iterator(); while (it.hasNext()) { - String key = (String) it.next(); + Map.Entry next = it.next(); + String key = next.getKey(); it.remove(); removeKey(key); } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java index 11b968b840..435d2a5fe7 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java @@ -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 optionsArrayList); + void updateBatchMarkerPosition(HashMap optionsArrayList); /** * 添加感知使用到的3d模型 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerManager.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerManager.java index 9071f7c027..27472b1430 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerManager.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerManager.java @@ -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 optionsArrayList); + void updateBatchMarkerPosition(HashMap optionsArrayList); /** * 添加感知使用到的3d模型 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java index 26e7a3aaee..8217248dec 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java @@ -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 optionsArrayList) { + public void updateBatchMarkerPosition(HashMap optionsArrayList) { if (!checkAMap()) { return; } ArrayList 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 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java index 68db93e630..f2919f49d1 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java @@ -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 optionsArrayList) { + public void updateBatchMarkerPosition(HashMap optionsArrayList) { try { MogoMap.getInstance().getMogoMap().updateBatchMarkerPosition(optionsArrayList); } catch (Exception e) {