diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index b9f839be11..5928d1df61 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -85,12 +85,12 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL WorkThreadHandler.getInstance().postDelayed(() -> { IMogoMarker marker = drawMarker(markerShowEntity); Log.d("liyz", "renderWarnData marker != null "); - marker.addDynamicAnchorPosition(new MogoLatLng(data.getCollisionLat(), data.getCollisionLon()), (float) data.getHeading(), 4000); + marker.addDynamicAnchorPosition(new MogoLatLng(data.getCollisionLat(), data.getCollisionLon()), (float) data.getHeading(), 5000); //移动完成以后,3s后消失 UiThreadHandler.postDelayed( () -> { marker.remove(); - }, 3000 ); + }, 8000 ); }, 0); @@ -105,7 +105,8 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); options.icon3DRes(getModelRes(2)); //TODO - options.anchorColor("#FF4040"); +// options.anchorColor("#FF4040"); + options.anchorColor("#FF3036"); //红色 IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerShowEntity.getMarkerType(), options); iMarkerView.setMarker(marker); marker.setToTop(); diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java index 9f294af585..532dca9d7a 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java @@ -54,6 +54,7 @@ public class V2XWarningEntity implements Serializable { public long satelliteTime; //预警蒙层等展示时长 private long showTime; + private float roadwidth; //自组字段 //tts播报 @@ -218,6 +219,14 @@ public class V2XWarningEntity implements Serializable { return stopLines; } + public float getRoadwidth() { + return roadwidth; + } + + public void setRoadwidth(float roadwidth) { + this.roadwidth = roadwidth; + } + @Override public String toString() { return "V2XWarningEntity{" + @@ -231,6 +240,7 @@ public class V2XWarningEntity implements Serializable { ", angle=" + angle + ", direction=" + direction + ", speed=" + speed + + ", stopLines=" + stopLines + ", stopLineDistance=" + stopLineDistance + ", roadId='" + roadId + '\'' + ", laneId='" + laneId + '\'' + @@ -241,6 +251,8 @@ public class V2XWarningEntity implements Serializable { ", heading=" + heading + ", systemTime=" + systemTime + ", satelliteTime=" + satelliteTime + + ", showTime=" + showTime + + ", roadwidth=" + roadwidth + ", tts='" + tts + '\'' + ", carLocation=" + carLocation + '}'; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java index 9e98307aa5..a274f3d9c6 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java @@ -67,7 +67,7 @@ public class V2XWaringManager { } /** - * TODO 测试数据 + * 测试数据 */ private void testData() { @@ -86,7 +86,6 @@ public class V2XWaringManager { // 加载数据源 V2XWarningEntity warningEntity = GsonUtil.objectFromJson(baos.toString(), V2XWarningEntity.class); V2XServiceManager.getMoGoV2XCloundDataManager().analysisV2XCloundDataEvent(warningEntity); - Logger.d(V2XConst.LOG_NAME_WARN, "testData -----> "); } catch (Exception e) { e.printStackTrace(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java index 43e5a4eb06..0a124b9e96 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; /** - * 当前车辆与道路事件的连接线 + * 绘制行人和二轮车连线 */ @Route(path = MoGoV2XServicePaths.PATH_V2X_PERSON_WARN_POLYLINE_MANAGER) public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineManager { @@ -54,9 +54,8 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan } // 线条粗细,渐变,渐变色值 -// Logger.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager roadWidth = " + roadWidth); - options.width(60).useGradient(true).colorValues(colors); -// options.width(info.getWidth()).useGradient(true).colorValues(colors); + Log.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager width = " + info.getWidth()); + options.width(info.getWidth()).useGradient(true).transparency(0.1f).colorValues(colors); // 当前车辆位置 options.add(info.getStartLocation()); // 目标车辆位置 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java index 216058ac4a..c7bfc74e61 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java @@ -17,6 +17,7 @@ import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.entity.model.DrawLineInfo; import com.mogo.module.v2x.manager.IMoGoV2XCloundDataManager; import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import java.util.Arrays; @@ -29,24 +30,36 @@ import static com.mogo.module.v2x.V2XServiceManager.getContext; @Route(path = MoGoV2XServicePaths.PATH_V2X_WARN_CLOUND_DATA_MANAGER) public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMogoCarLocationChangedListener2 { private V2XWarningEntity mCloundWarningInfo; + private static String TAG = "MoGoV2XCloundDataManager"; @Override public void init(Context context) { + MogoApisHandler.getInstance().getApis().getRegisterCenterApi() + .registerCarLocationChangedListener(TAG, this); } @Override public void analysisV2XCloundDataEvent(V2XWarningEntity cloundWarningInfo) { + Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> "); + mCloundWarningInfo = cloundWarningInfo; - //绘制识别物与交汇点连线,并且更新连线数据 TODO VR模式无法获取道路宽度 - drawOtherObjectLine(cloundWarningInfo); - Logger.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> "); + //绘制识别物与交汇点连线,并且更新连线数据 + WorkThreadHandler.getInstance().postDelayed(() -> { + drawOtherObjectLine(cloundWarningInfo); + }, 0); + //二轮车和行人的渲染和移动 V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + + //延迟3秒清理线 + UiThreadHandler.postDelayed( () -> { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + }, 8000 ); } /** - * 绘制行人和二轮车连线,并且更新数据 + * 绘制行人和二轮车连线,并且更新数据 TODO 需要实时给行人当前位置 */ private void drawOtherObjectLine(V2XWarningEntity info) { IMogoPolyline polyLine = V2XServiceManager.getMoGoPersonWarnPolylineManager().getMogoPersonWarnPolyline(); @@ -56,7 +69,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog polyLine.setPoints(Arrays.asList(new MogoLatLng(info.getLat(), info.getLon()), new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()))); } else { - Log.d(V2XConst.LOG_NAME_WARN, "polyLine == null"); + Log.e(V2XConst.LOG_NAME_WARN, "polyLine == null"); DrawLineInfo lineInfo = new DrawLineInfo(); MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon()); MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()); @@ -64,21 +77,14 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog lineInfo.setEndLocation(endLatlng); lineInfo.setHeading(info.heading); if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { - float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getLon(), - info.getLat(), (float) info.heading, true, true); - Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth); - float pixel = V2XServiceManager.getMapUIController().getScalePerPixel(); - float width = roadWidth / pixel; - lineInfo.setWidth(width); +// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getLon(), +// info.getLat(), (float) info.heading, true, true); + Log.d(V2XConst.LOG_NAME_WARN, "drawOtherObjectLine width = " + info.getRoadwidth()); + lineInfo.setWidth(info.getRoadwidth()); } V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo); } - //延迟3秒清理线 - UiThreadHandler.postDelayed( () -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - }, 6000 ); - } else { Log.e(V2XConst.LOG_NAME_WARN, "info == null"); V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); @@ -91,11 +97,11 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } /** - * 自车定位 移动完成需要 3s消失 + * 自车定位 移动完成需要 3s消失,这里何时清理,应该是没有数据的时候 */ @Override public void onCarLocationChanged2(Location latLng) { - Log.d(V2XConst.LOG_NAME_WARN, "latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude()); + Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude()); //当行人经纬度交点 经纬度不为空,开始画线,否则清理 //自车只需要关注移动 IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); @@ -105,21 +111,21 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog new MogoLatLng(mCloundWarningInfo.getCollisionLat(), mCloundWarningInfo.getCollisionLon()))); } else { - Log.e(V2XConst.LOG_NAME_WARN, "mogoPolyline == null"); + Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth()); DrawLineInfo info = new DrawLineInfo(); // 对象 MogoLatLng startLatlng = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getCollisionLat(), mCloundWarningInfo.getCollisionLon()); info.setHeading(latLng.getBearing()); info.setStartLocation(startLatlng); info.setEndLocation(endLatlng); - info.setWidth(60); //TODO + info.setWidth(mCloundWarningInfo.getRoadwidth()); //TODO 还需要转换比例尺 V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); } - //延迟3秒清理线 + //延迟3秒清理线 TODO 何时 清理 UiThreadHandler.postDelayed( () -> { V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - }, 3000 ); + }, 13000 ); } else { Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mCloundWarningInfo == null"); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java index 723e182ccc..4362aac4c3 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java @@ -38,8 +38,6 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { mMogoPolyline.remove(); } - Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager --------> "); - // 连接线参数 MogoPolylineOptions options = new MogoPolylineOptions(); List colors = new ArrayList<>(); @@ -58,9 +56,9 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { colors.add(0xFFE32F46); } -// Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + roadWidth); + Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + info.getWidth()); // 线条粗细,渐变,渐变色值 - options.width(60).useGradient(true).colorValues(colors); + options.width(info.getWidth()).useGradient(true).transparency(0.9f).colorValues(colors); // options.width(info.getWidth()).useGradient(true).colorValues(colors); // 当前车辆位置 options.add(info.getStartLocation()); diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index 91f29e6187..838ce52329 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -25,5 +25,6 @@ "stopLineLon": 116.417634, "warningContent": "小心行人", "heading": 30, - "showTime": 3000 + "showTime": 3000, + "roadwidth": 65.0 } \ No newline at end of file