From 10578f47d81c4d4a44174c81482c733576705162 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 29 Apr 2021 11:47:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE;gps=E5=8F=82=E6=95=B0=E6=B7=BB=E5=8A=A0,=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=BE=A7=E6=A0=B9=E6=8D=AE=E9=9D=9Egps=E5=9D=90?= =?UTF-8?q?=E6=A0=87=E5=81=9A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/map/overlay/MogoPolylineOptions.java | 14 +-- .../common/drawer/V2XWarnDataDrawer.java | 1 + .../impl/MoGoV2XCloundDataManager.java | 112 +++++++++--------- 3 files changed, 61 insertions(+), 66 deletions(-) diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/MogoPolylineOptions.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/MogoPolylineOptions.java index 18d40f3f5f..929390c731 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/MogoPolylineOptions.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/MogoPolylineOptions.java @@ -30,7 +30,7 @@ public class MogoPolylineOptions { private float mTransparency = 1.0F; private boolean mIsAboveMaskLayer = false; private boolean mIsPointsUpdated = false; - private boolean isGps = false; + private boolean mGps = false; private List mColorValues; public MogoPolylineOptions() { @@ -178,15 +178,13 @@ public class MogoPolylineOptions { mColorValues = colors; return this; } - - - public MogoPolylineOptions setGps(boolean gps) { - isGps = gps; - return this; + public boolean gps() { + return mGps; } - public boolean isGps() { - return isGps; + public MogoPolylineOptions setGps(boolean gps) { + mGps = gps; + return this; } public List getPoints() { 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 2391830455..75680fdfc9 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 @@ -169,6 +169,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL .latitude(newLocation.getLat()) .longitude(newLocation.getLon()) .anchor(1.0f, 1.0f) + .setGps(true) .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); optionsRipple .icon(ViewUtils.fromView(new EmptyMarkerView(mContext))); 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 9b2e219062..0ad8a5c4eb 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 @@ -70,13 +70,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog @Override public void analysisV2XCloundDataEvent(V2XWarningEntity cloundWarningInfo) { - //测试数据 - MogoLatLng s = new MogoLatLng(26.88394048,112.5678959); - MogoLatLng t = new MogoLatLng(26.88393912,112.5678793); - Double b = Trigonometric.getAngle(s.lon,s.lat,t.lon,t.lat); - - - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { +// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { mCloundWarningInfo = cloundWarningInfo; showTime = mCloundWarningInfo.getShowTime(); pointsBetween(); @@ -137,6 +131,54 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog }, showTime); } } +// } + + + /** + * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警) + */ + private void drawSelfCarLine(double lon, double lat, float bearing) { + if (!isSelfLineClear) { + IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); + if (mCloundWarningInfo != null) { + MogoLatLng startLatlng = null; + MogoLatLng endLatlng = null; + MogoLatLng addMiddleLoc = null; + + if (!isFirstLocation) { + carLocation = getMogoLat(new MogoLatLng(lat, lon)); + isFirstLocation = true; + } + + endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(), + mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lon : mCloundWarningInfo.getCollisionLon()); + //自车位置 + startLatlng = new MogoLatLng(lat, lon); + float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); + addMiddleLoc = Trigonometric.getNewLocation(startLatlng, distance / 2, Trigonometric.getAngle(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat)); + Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lat + "," + startLatlng.lon + + "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat); + + if (mogoPolyline != null) { + mogoPolyline.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); + mogoPolyline.setTransparency(0.5f); + } else { + DrawLineInfo info = new DrawLineInfo(); // 对象 + Log.d(TAG, "安全区域的画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); + List locations = new ArrayList(); + locations.add(startLatlng); + locations.add(addMiddleLoc); + locations.add(endLatlng); + info.setLocations(locations); + info.setHeading(bearing); + info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5); + info.setDirection(mCloundWarningInfo.getDirection()); + V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); + } + } else { + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + } + } } /* @@ -268,11 +310,11 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog public void onCarLocationChanged2(Location latLng) { // Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 lat = " + latLng.getLatitude() + "--lon =" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); // if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - //当行人经纬度交点 开始画线,否则清理 - if (mCloundWarningInfo != null) { - mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); - } - drawSelfCarLine(latLng.getLongitude(), latLng.getLatitude(), latLng.getBearing()); + //当行人经纬度交点 开始画线,否则清理 + if (mCloundWarningInfo != null) { + mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); + } + drawSelfCarLine(latLng.getLongitude(), latLng.getLatitude(), latLng.getBearing()); // } carLocation = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); } @@ -281,52 +323,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog public void onCarLocationChanged(MogoLatLng latLng) { } - /** - * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警) - */ - private void drawSelfCarLine(double lon, double lat, float bearing) { - if (!isSelfLineClear) { - IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); - if (mCloundWarningInfo != null) { - MogoLatLng startLatlng = null; - MogoLatLng endLatlng = null; - MogoLatLng addMiddleLoc = null; - - if (!isFirstLocation) { - carLocation = getMogoLat(new MogoLatLng(lat, lon)); - isFirstLocation = true; - } - - endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(), - mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lon : mCloundWarningInfo.getCollisionLon()); - //自车位置 - startLatlng = new MogoLatLng(lat, lon); - float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); - addMiddleLoc = Trigonometric.getNewLocation(startLatlng, distance / 2, Trigonometric.getAngle(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat)); - Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lat + "," + startLatlng.lon + - "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat); - - if (mogoPolyline != null) { - mogoPolyline.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); - mogoPolyline.setTransparency(0.5f); - } else { - DrawLineInfo info = new DrawLineInfo(); // 对象 - Log.d(TAG, "安全区域的画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); - List locations = new ArrayList(); - locations.add(startLatlng); - locations.add(addMiddleLoc); - locations.add(endLatlng); - info.setLocations(locations); - info.setHeading(bearing); - info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5); - info.setDirection(mCloundWarningInfo.getDirection()); - V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); - } - } else { - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - } - } - } /** * 补点后的停止线经纬度合集