From b880bf6f978b007925ec1ed2410d6b20cd4bd51d Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 15 Apr 2021 15:02:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E8=89=B2=E9=A2=84=E8=AD=A6=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E5=9D=90=E6=A0=87=E7=82=B9=E6=9B=B4=E6=96=B0,?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=9C=A8=E4=B8=80=E6=9D=A1=E7=9B=B4=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=98=BE=E7=A4=BA=E6=B8=90=E5=8F=98=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MoGoV2XCloundDataManager.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) 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 882f35b916..f65be53a7c 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 @@ -67,13 +67,14 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog isFirstLocation = false; if (cloundWarningInfo.getDirection() == 1) { //前方 - MogoLatLng newLocation = Trigonometric.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle()); + MogoLatLng startLatLng = getMiddleLocationInStopLine(); + MogoLatLng warningLocation = Trigonometric.getNewLocation(startLatLng, 80, cloundWarningInfo.getAngle()); //停止线前方画线 WorkThreadHandler.getInstance().postDelayed(() -> { //二轮车和行人的渲染和移动 V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); //绘制识别物与交汇点连线,并且更新连线数据 - drawStopLine(cloundWarningInfo, newLocation); + drawStopLine(cloundWarningInfo, startLatLng, warningLocation); //添加停止线marker handleStopLine(); }, 500); @@ -120,25 +121,25 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } /** - * 车辆行驶正前方绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置 + * 场景如:车辆行驶正前方绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置 */ - private void drawStopLine(V2XWarningEntity info, MogoLatLng mogoLatLng) { + private void drawStopLine(V2XWarningEntity info, MogoLatLng startLatLng, MogoLatLng mogoLatLng) { if (info != null) { IMogoPolyline polyLine = V2XServiceManager.getMoGoStopPolylineManager().getMogoStopPolyline(); - MogoLatLng startLatlng = new MogoLatLng(carLocation.lat, carLocation.lon); MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon); - Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine endLatlng lon =" + endLatlng.lon + "--lat =" + endLatlng.lat - + "--startLatlng lon = " + startLatlng.lon + "-lat = " + startLatlng.lat); - float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); - MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatlng, distance / 2, mCloundWarningInfo.getAngle()); + float distance = CoordinateUtils.calculateLineDistance(startLatLng.lon, startLatLng.lat, endLatlng.lon, endLatlng.lat); + MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatLng, distance / 2, mCloundWarningInfo.getAngle()); + Log.d(V2XConst.LOG_NAME_WARN, "红色区域起始点 = " + startLatLng.lon + "," + startLatLng.lat + + "中间点坐标:" + addMiddleLoc.lon + "," + addMiddleLoc.lat + + "终点" + endLatlng.lon + "," + endLatlng.lat); if (polyLine != null) { Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null"); - polyLine.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); + polyLine.setPoints(Arrays.asList(startLatLng, addMiddleLoc, endLatlng)); polyLine.setTransparency(0.5f); } else { DrawLineInfo lineInfo = new DrawLineInfo(); List locations = new ArrayList(); - locations.add(startLatlng); + locations.add(startLatLng); locations.add(addMiddleLoc); locations.add(endLatlng); lineInfo.setLocations(locations); @@ -299,8 +300,15 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } private MogoLatLng getMogoLat(MogoLatLng latlng) { - MogoLatLng newLocation = Trigonometric.getNewLocation(latlng, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getDirection()); + MogoLatLng newLocation = Trigonometric.getNewLocation(latlng, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle()); return newLocation; } + /* + * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算 + * */ + private MogoLatLng getMiddleLocationInStopLine() { + MogoLatLng newLocation = Trigonometric.getNewLocation(carLocation, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle()); + return newLocation; + } }