From 21f39a83e7ed735dc4ecf88d961b0a974ad9e001 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 10 Jul 2024 19:40:42 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6][?= =?UTF-8?q?=E7=BB=BF=E6=B3=A2=E9=80=9A=E8=A1=8C]=20=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F;=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=B7=AF=E5=8F=A3=E8=A7=86=E8=A7=92=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt | 1 - .../v2n/scenario/scene/airoad/AiRoadMarker.kt | 20 +++--- .../routeoverlay/MogoRouteOverlayManager.java | 63 +++++++++++++++---- .../routeoverlay/RouteOverlayDrawer.java | 43 +++++++++---- .../map/sdk/inner/common/ConstantExt.kt | 6 +- 5 files changed, 95 insertions(+), 38 deletions(-) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt index 34101dd922..691f63654e 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt @@ -158,7 +158,6 @@ internal object V2NIdentifyDrawer: IEventDismissListener { ) ) if (polygon.isNotEmpty()) { - val decision = V2NUtils.computeOccupyLanesInfo(Triple(car.longitude, car.latitude, car.heading.toFloat()), Triple(itx.longitude, itx.latitude, itx.heading.toFloat()), polygon.map { kotlin.Pair(it.first, it.second) }) if (decision != null) { val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt index 342c9ec359..27481e1904 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/airoad/AiRoadMarker.kt @@ -188,16 +188,16 @@ class AiRoadMarker { }) } - if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) { - val builder = Polyline.Options.Builder(V2XConst.V2X_MARKER_OWNER, ROAD_CENTER_LINE) - builder.colors(listOf(Color.parseColor("#996DFED0"), Color.parseColor("#CC6DFED0"), Color.parseColor("#C76DFED0"), Color.parseColor("#006DFED0"))) - .setWidth(50f) - .setUseGps(true) - .points(listOf(MogoLatLng(location.latitude, location.longitude), MogoLatLng(marker.poi_lat, marker.poi_lon))) - .setIsGradient(true) - .isShowArrow(true) - CallerMapUIServiceManager.getOverlayManager()?.showOrUpdateLine(builder.build())?.also { wrapper.addLine(it) } - } +// if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) { +// val builder = Polyline.Options.Builder(V2XConst.V2X_MARKER_OWNER, ROAD_CENTER_LINE) +// builder.colors(listOf(Color.parseColor("#996DFED0"), Color.parseColor("#CC6DFED0"), Color.parseColor("#C76DFED0"), Color.parseColor("#006DFED0"))) +// .setWidth(50f) +// .setUseGps(true) +// .points(listOf(MogoLatLng(location.latitude, location.longitude), MogoLatLng(marker.poi_lat, marker.poi_lon))) +// .setIsGradient(true) +// .isShowArrow(true) +// CallerMapUIServiceManager.getOverlayManager()?.showOrUpdateLine(builder.build())?.also { wrapper.addLine(it) } +// } wrapper.onRemoved = { id -> aiMakers.remove(id) } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java index c962aa952a..13363ad218 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java @@ -1,32 +1,26 @@ package com.mogo.eagle.core.function.business.routeoverlay; -import android.util.Log; +import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; -import com.mogo.eagle.core.data.config.HdMapBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener; import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningTrajectoryListener; +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerPlanningTrajectoryListenerManager; +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager; -import org.jetbrains.annotations.NotNull; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; import mogo.telematics.pad.MessagePad; -import mogo_msg.MogoReportMsg; -import system_master.SsmInfo; -import system_master.SystemStatusInfo; public class MogoRouteOverlayManager implements IMoGoPlanningTrajectoryListener, @@ -36,6 +30,52 @@ public class MogoRouteOverlayManager implements private final LinkedList> queue = new LinkedList<>(); + private AtomicBoolean hasGreenWave = new AtomicBoolean(false); + + private final IViewControlListener listener = new IViewControlListener() { + + @Override + public void updateFuncMode(@NonNull String tag, boolean b) { + } + + @Override + public void updateStatusBarDownloadView(boolean insert, @NonNull String tag, int progress) { + } + + @Override + public void updateConnectionProgressView(boolean visible) { + } + + @Override + public void updateStatusBarLeftView(boolean insert, @NonNull String tag, @NonNull ViewGroup viewGroup) { + } + + @Override + public void updateStatusBarRightView(boolean insert, @NonNull String tag, @NonNull ViewGroup viewGroup) { + } + + @Override + public void setStatusBarDarkOrLight(boolean light) { + } + + @Override + public void mainPageViewVisible(int v) { + } + + @Override + public void visible(int v) { + } + + @Override + public void onGreenWaveViewVisible(int min, int max, int cross) { + hasGreenWave.set(true); + } + + @Override + public void onGreenWaveViewDismiss() { + hasGreenWave.set(false); + } + }; private MogoRouteOverlayManager() { } @@ -43,6 +83,7 @@ public class MogoRouteOverlayManager implements public void init() { CallerPlanningTrajectoryListenerManager.INSTANCE.addListener(TAG, this); CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 20,this); + CallerHmiViewControlListenerManager.INSTANCE.addListener(TAG, listener); } public static MogoRouteOverlayManager getInstance() { @@ -78,7 +119,7 @@ public class MogoRouteOverlayManager implements return; } // Log.d(TAG, "-- onChassisLocationGCJ02 -- 2 ---" + "auto-mode:" + autoPilotState + ", isDemoMode:" + FunctionBuildConfig.isDemoMode + ", force:" + FunctionBuildConfig.isForceDrawAutopilotTrajectoryByDebugSettingView); - boolean force = FunctionBuildConfig.isForceDrawAutopilotTrajectoryByDebugSettingView || FunctionBuildConfig.isDemoMode && FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData; + boolean force = hasGreenWave.get() || FunctionBuildConfig.isForceDrawAutopilotTrajectoryByDebugSettingView || FunctionBuildConfig.isDemoMode && FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData; if (!force && autoPilotState != 2) { RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; @@ -88,7 +129,7 @@ public class MogoRouteOverlayManager implements if (!queue.isEmpty()) { List items = queue.pollLast(); if (items != null && !items.isEmpty()) { - RouteOverlayDrawer.getInstance().drawTrajectoryList(items, gnssInfo.getHeading()); + RouteOverlayDrawer.getInstance().drawTrajectoryList(items, gnssInfo.getHeading(), hasGreenWave.get()); } } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java index 54a04fa388..e2cb8cbbcb 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java @@ -23,6 +23,7 @@ import com.zhidaoauto.map.sdk.open.common.tools.MapTools; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import kotlin.Pair; import mogo.telematics.pad.MessagePad; @@ -41,8 +42,9 @@ public class RouteOverlayDrawer { //用于taxi乘客屏渐变颜色集合 - private static List colors = null; + private List colors = null; + private final List greenWaveColors = new ArrayList<>(); private RouteOverlayDrawer() { // 渐变色 mogoOverlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); @@ -62,6 +64,11 @@ public class RouteOverlayDrawer { } }; renderTask.start(); + //Color.parseColor("#996DFED0"), Color.parseColor("#CC6DFED0"), Color.parseColor("#C76DFED0"), Color.parseColor("#006DFED0") + greenWaveColors.add(Color.parseColor("#996DFED0")); + greenWaveColors.add(Color.parseColor("#CC6DFED0")); + greenWaveColors.add(Color.parseColor("#C76DFED0")); + greenWaveColors.add(Color.parseColor("#006DFED0")); } } @@ -92,15 +99,17 @@ public class RouteOverlayDrawer { private final LinkedList points; private double bearing; + private boolean hasGreenWave; public RenderTask() { this.pools = new Pools.SimplePool<>(500); this.points = new LinkedList<>(); } - public void setData(List routeList, double bearing) { + public void setData(List routeList, double bearing, boolean hasGreenWave) { this.routeList = routeList; this.bearing = bearing; + this.hasGreenWave = hasGreenWave; } @SuppressLint("LongLogTag") @@ -121,11 +130,11 @@ public class RouteOverlayDrawer { isExcept = true; return; } - boolean isColorfulStrategy = !AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) || !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode); + boolean isColorfulStrategy = !hasGreenWave && !AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) || !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode); if (isColorfulStrategy) { RouteStrategy.INSTANCE.start(); } else { - if (colors == null) { + if (colors == null || colors.isEmpty()) { ArrayList> temps = new ArrayList<>(); temps.add(new Pair<>(0, 51)); temps.add(new Pair<>(10, 102)); @@ -133,7 +142,7 @@ public class RouteOverlayDrawer { temps.add(new Pair<>(100, 0)); List alphas = MapTools.INSTANCE.getColorAlpha(temps); if (alphas != null && !alphas.isEmpty()) { - colors = new ArrayList<>(); + colors = new CopyOnWriteArrayList<>(); for (int i : alphas) { colors.add(Color.argb(i, 48,203,251)); } @@ -227,12 +236,20 @@ public class RouteOverlayDrawer { builder.setLightColor(COLOR_LIGHT); builder.setLightSpeed(0.3f); } else { - if (colors != null && !colors.isEmpty()) { - builder.colors(colors); - builder.setIsGradient(true); - builder.setLightOn(true); - builder.setLightColor(COLOR_LIGHT); - builder.setLightSpeed(0.3f); + if (!hasGreenWave) { + if (colors != null && !colors.isEmpty()) { + builder.colors(colors); + builder.setIsGradient(true); + builder.setLightOn(true); + builder.isShowArrow(false); + builder.setLightColor(COLOR_LIGHT); + builder.setLightSpeed(0.3f); + } + } else { + builder.colors(greenWaveColors) + .setIsGradient(true) + .setLightOn(false) + .isShowArrow(true); } } builder.points(points); @@ -270,12 +287,12 @@ public class RouteOverlayDrawer { private volatile RenderTask mRenderTask; - public void drawTrajectoryList(List routeList, double bearing) { + public void drawTrajectoryList(List routeList, double bearing, boolean hasGreenWave) { if (mogoOverlayManager != null) { if (mRenderTask == null) { mRenderTask = new RenderTask(); } - mRenderTask.setData(routeList, bearing); + mRenderTask.setData(routeList, bearing, hasGreenWave); if (mRenderHandler != null) { mRenderHandler.removeCallbacks(mRenderTask); mRenderHandler.post(mRenderTask); diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/common/ConstantExt.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/common/ConstantExt.kt index 332a4e3d3d..0694d64815 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/common/ConstantExt.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/common/ConstantExt.kt @@ -48,13 +48,13 @@ object ConstantExt { const val MAP_STYLE_VR_ANGLE_ROAD_CROSS_NEW = 12 //新路口视角-摄像机高度 - const val MAP_STYLE_VR_EYE_HEIGHT_ROAD_CROSS_NEW = 59.3f + const val MAP_STYLE_VR_EYE_HEIGHT_ROAD_CROSS_NEW = 52.9f //新路口视角-摄像机角度 - const val MAP_STYLE_VR_OVER_LOOK_ROAD_CROSS_NEW = 36.3f + const val MAP_STYLE_VR_OVER_LOOK_ROAD_CROSS_NEW = 31.0f //新路口视角-缩放值 - const val MAP_STYLE_VR_ZOOM_VAL_ROAD_CROSS_NEW = 2.9f + const val MAP_STYLE_VR_ZOOM_VAL_ROAD_CROSS_NEW = 0.9f //漫游距离1公里