From eaeafaed09b3ae78a2154f83065afa7a2f7d5b44 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 9 Apr 2021 19:23:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=9C=E6=AD=A2=E7=BA=BF=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=B0CloundManager=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .../common/entity/V2XWarningEntity.java | 8 +++++++ .../impl/MoGoV2XCloundDataManager.java | 21 +++++++++++------ .../scene/warning/V2XWarningMarker.java | 22 ++---------------- .../v2x_warning_marker_target.png | Bin 8929 -> 0 bytes 5 files changed, 24 insertions(+), 28 deletions(-) delete mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 4ff10f68a5..83405b8de1 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -91,7 +91,6 @@ 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 532dca9d7a..b4a0bd6382 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 @@ -126,6 +126,14 @@ public class V2XWarningEntity implements Serializable { this.speed = speed; } + public long getShowTime() { + return showTime; + } + + public void setShowTime(long showTime) { + this.showTime = showTime; + } + public void setStopLineDistance(double stopLineDistance) { this.stopLineDistance = stopLineDistance; 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 e9b15b4f78..f5d8fe193e 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 @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_LINE_DATA; import static com.mogo.module.v2x.V2XConst.V2X_FRONT_WARNING_MARKER; import static com.mogo.module.v2x.V2XServiceManager.getContext; @@ -47,7 +48,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog private boolean isSelfLineClear; private List fillPoints = new ArrayList();//停止线经纬度合集 - @Override public void init(Context context) { MogoApisHandler.getInstance().getApis().getRegisterCenterApi() @@ -69,7 +69,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog Log.d(V2XConst.LOG_NAME_WARN, "direction = " + cloundWarningInfo.getDirection()); if (cloundWarningInfo.getDirection() == 1) { //前方 //停止线前方画线 - MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.heading); + MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle()); WorkThreadHandler.getInstance().postDelayed(() -> { //二轮车和行人的渲染和移动 V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); @@ -83,7 +83,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); V2XServiceManager.getMoGoStopPolylineManager().clearLine(); - isSelfLineClear = true; }, 8000); @@ -125,15 +124,19 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog * 2D资源绘制停止线 * */ private void drawStopLineWith2Resource() { - mCloundWarningInfo.setCarLocation(new MogoLatLng(39.976866,116.417622));//测试数据 + + //自车位置39.97665425796924--116.41769983329762 + mCloundWarningInfo.setCarLocation(new MogoLatLng(39.97665425796924,116.41769983329762));//测试数据 + MogoLatLng carlo = mCloundWarningInfo.getCarLocation(); - if (carlo == null){ + if (carlo == null) { double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); carlo = new MogoLatLng(lat, lon); } + //自车行驶方向的前方*米的经纬度,该经纬度在停止线上 MogoLatLng drawStopLineLon = LocationUtils.getNewLocation(carlo, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle()); - + Log.d(TAG, "2D资源绘制停止线"+drawStopLineLon); MogoMarkerOptions optionsRipple = new MogoMarkerOptions() .latitude(drawStopLineLon.getLat()) .longitude(drawStopLineLon.getLon()) @@ -142,9 +145,12 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog optionsRipple .icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext()))); - IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple); + IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(TYPE_MARKER_CLOUD_STOP_LINE_DATA, optionsRipple); stopLine.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext()))); stopLine.showInfoWindow(); +// UiThreadHandler.postDelayed(() -> { +// stopLine.hideInfoWindow(); +// }, 8000); } /** @@ -224,6 +230,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog public void onCarLocationChanged2(Location latLng) { Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); //当行人经纬度交点 开始画线,否则清理 + mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); drawSlefCarLine(latLng); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index 2b44bef806..6470241db7 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java @@ -60,13 +60,10 @@ public class V2XWarningMarker implements IV2XMarker { .longitude(mMarkerEntity.getLon()) .anchor(0.5f, 0.5f) .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); - - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - } optionsRipple - .icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext()))); + .icon(ViewUtils.fromView(new EmptyMarkerView(mContext))); optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple); - optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext()))); + optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(mContext))); optimalMarker.showInfoWindow(); } catch (Exception e) { @@ -76,21 +73,6 @@ public class V2XWarningMarker implements IV2XMarker { } - private void drawMarkerWithLocation(MogoLatLng latLng, String tag) { - MogoMarkerOptions options = new MogoMarkerOptions() - .object(markerShowEntity) - .latitude(latLng.lat) - .longitude(latLng.lon); - IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); - options.icon3DRes(com.mogo.module.service.R.raw.people); - options.anchor(0.5f, 0.5f); - options.anchorColor("#FF4040"); - IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(tag, options); - iMarkerView.setMarker(marker); - marker.setToTop(); - } - - @Override public void clearPOI() { V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER); diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png deleted file mode 100644 index be6da047d09af9da4cb879e906d19c2522116d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8929 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