diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index e019b5ca82..b71f168f2f 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -35,6 +35,11 @@ class AdasRecognizedResultDrawer extends BaseDrawer { private static volatile AdasRecognizedResultDrawer sInstance; + /** + * 上一帧数据的缓存 + */ + protected static Map mMarkersCaches = new ConcurrentHashMap<>(); + public AdasRecognizedResultDrawer() { super(); } @@ -104,7 +109,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } } - removeUselessMarker(); + removeUselessMarker(mMarkersCaches); removeUselessLastRecord(); // 能复用的 marker 数量 @@ -261,7 +266,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { * 绘制某个物体的一个数据 * * @param recognizedListResult {@link ADASRecognizedResult} - * @param newAdasRecognizedMarkersCaches + * @param newAdasRecognizedMarkersCaches 缓存集合 */ private void renderAdasOneFrame(IMogoMarker marker, String uniqueKey, @@ -310,8 +315,8 @@ class AdasRecognizedResultDrawer extends BaseDrawer { /** * 绘制 marker * - * @param recognizedListResult - * @return + * @param recognizedListResult {@link ADASRecognizedResult} + * @return {@link IMogoMarker} */ private IMogoMarker drawAdasRecognizedDataMarker(ADASRecognizedResult recognizedListResult) { if (recognizedListResult == null) { @@ -326,7 +331,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { carColor = getModelRenderColor(recognizedListResult.type, FROM_ADAS, recognizedListResult.speed, recognizedListResult.lon, recognizedListResult.lat, recognizedListResult.heading); } MogoMarkerOptions options = new MogoMarkerOptions() - .owner(DataTypes.TYPE_MARKER_MERGE) + .owner(DataTypes.TYPE_MARKER_ADAS) .anchor(0.5f, 0.5f) .set3DMode(true) .gps(true) @@ -336,7 +341,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { .icon3DRes(resId) .rotate((float) recognizedListResult.heading) .position(new MogoLatLng(recognizedListResult.lat, recognizedListResult.lon)); - IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(DataTypes.TYPE_MARKER_MERGE, options); + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(DataTypes.TYPE_MARKER_ADAS, options); cacheMarkerIconResMd5Val(resIdVal, marker); return marker; } @@ -355,9 +360,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if (mMarkersCaches != null) { mMarkersCaches.clear(); } - if (mLastPositions != null) { - mLastPositions.clear(); - } - sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_MERGE); + mLastPositions.clear(); + sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_ADAS); } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index b91e5c6c64..58d286ab95 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -28,6 +28,8 @@ import java.util.concurrent.ConcurrentHashMap; import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_ADAS; import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_MY_LOCATION; import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_ROAD_UNIT; +import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_ADAS; +import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_DATA; import static java.lang.Math.PI; public @@ -57,11 +59,6 @@ class BaseDrawer { */ protected static final ConcurrentHashMap mMarkerCachesResMd5Values = new ConcurrentHashMap<>(); - /** - * 上一帧数据的缓存 - */ - protected static Map mMarkersCaches = new ConcurrentHashMap<>(); - protected final Context mContext; private TextView mSpeedView; @@ -116,7 +113,7 @@ class BaseDrawer { /** * 清除无效[为 null 或者 已被销毁]的 marker */ - protected void removeUselessMarker() { + protected void removeUselessMarker(Map mMarkersCaches) { if (mMarkersCaches == null || mMarkersCaches.isEmpty()) { return; } @@ -210,19 +207,16 @@ class BaseDrawer { protected String getModelRenderColor(int type, int fromType, double speed, double lon, double lat, double angle) { AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom(type); - if (recognizedType == AdasRecognizedType.classIdTrafficBus) { - return "#D8D8D8FF"; - } if (recognizedType == AdasRecognizedType.classIdUnKnow) { return Car3DModelColor.Normal.color; } // 距离策略 todo 此处两种策略是临时方案 double[] coordinates = getCurCoordinates(); double distance = CoordinateUtils.calculateLineDistance(lon, lat, coordinates[0], coordinates[1]) * 100; - if (distance < 50) { + if (distance < 15) { return Car3DModelColor.Dangerous.color; // todo 方案1 // return Car3DTestModelColor.getTestModelColor(fromType, Waring_Dangerous); // todo 方案2 - } else if (distance < 100 && distance >= 50) { + } else if (distance < 50 && distance >= 15) { return Car3DModelColor.Warming.color; // todo 方案1 // return Car3DTestModelColor.getTestModelColor(fromType, Waring_Close); // todo 方案2 } @@ -531,4 +525,14 @@ class BaseDrawer { return new double[]{lon, lat}; } + protected String getDataTypes(int fromType) { + switch (fromType) { + case FROM_MY_LOCATION: + return TYPE_MARKER_CLOUD_DATA; + case FROM_ADAS: + return TYPE_MARKER_ADAS; + default: + return TYPE_MARKER_CLOUD_DATA; + } + } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 787aba2807..af20ea4a6a 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -34,8 +34,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_MERGE; - /** * @author congtaowang * @since 2020/10/28 @@ -77,6 +75,11 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic return sInstance; } + /** + * 上一帧数据的缓存 + */ + protected static Map mMarkersCaches = new ConcurrentHashMap<>(); + private final Map mLastPositions = new ConcurrentHashMap<>(); private boolean mIsVrMode = false; @@ -122,7 +125,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic } mMarkersCaches.clear(); mLastPositions.clear(); - sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_MERGE); + sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_CLOUD_DATA); return true; } if (data == null || ( @@ -132,7 +135,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic mMarkersCaches.clear(); } mLastPositions.clear(); - sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_MERGE); + sendMessage(MSG_REMOVE_DIRTY_MARKERS, DataTypes.TYPE_MARKER_CLOUD_DATA); return true; } return false; @@ -172,7 +175,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic newDiffSet.add(cloudRoadData); } } - removeUselessMarker(); + removeUselessMarker(mMarkersCaches); removeUselessLastRecord(); // 能复用的 marker 数量 @@ -227,8 +230,8 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic /** * todo 后面涉及到此类变化的数据均改动 * - * @param marker - * @param cloudRoadDataProto + * @param marker {@link IMogoMarker} + * @param cloudRoadDataProto {@link SocketDownData.CloudRoadDataProto} */ private void updateCacheMarkerRes(IMogoMarker marker, SocketDownData.CloudRoadDataProto cloudRoadDataProto) { String resIdVal; @@ -290,7 +293,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic */ private void renderSnapshotOneFrame(IMogoMarker marker, String uniqueKey, SocketDownData.CloudRoadDataProto cloudRoadData, Map newSnapshotCaches) { - Logger.d(TAG,"renderSnapshotOneFrame"); + Logger.d(TAG, "renderSnapshotOneFrame"); final long start = System.currentTimeMillis(); SocketDownData.CloudRoadDataProto lastPosition = mLastPositions.remove(uniqueKey); @@ -431,7 +434,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic } MogoMarkerOptions options = new MogoMarkerOptions() - .owner(TYPE_MARKER_MERGE) + .owner(getDataTypes(data.getFromType())) .anchor(0.5f, 0.5f) .rotate((float) data.getHeading()) .object(data) @@ -452,7 +455,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic options.icon(view); resIdVal = view.getId() + ""; } - IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(TYPE_MARKER_MERGE, options); + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(getDataTypes(data.getFromType()), options); cacheMarkerIconResMd5Val(resIdVal, marker); if (!TextUtils.isEmpty(data.getSn())) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 2029b70339..cd5241f709 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -154,7 +154,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // adas 每隔一定频率传递过来的数据 MarkerServiceHandler.getApis().getAdasControllerApi().addAdasRecognizedDataCallback(resultList -> { - AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult(resultList); // todo 单项验证再开 + AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult(resultList); // Message msg = mSnapshotHandler.obtainMessage(); // msg.obj = resultList; // msg.what = MSG_ADAS;