From a8eb16f43ec9194eef72d21a08e6c7c19915ca24 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 17 Oct 2022 19:52:13 +0800 Subject: [PATCH] =?UTF-8?q?[V2X][Road]=E5=9F=8E=E5=B8=82=E5=8D=A0=E9=81=93?= =?UTF-8?q?=E6=96=BD=E5=B7=A5=E9=80=82=E9=85=8D=E5=9C=B0=E5=9B=BE=E8=A7=86?= =?UTF-8?q?=E8=A7=92=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/fragment/BaseBusTabFragment.java | 4 +++ .../ui/TaxiPassengerBaseFragment.java | 4 +++ .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 +++ .../hmi/ui/widget/PerspectiveSwitchView.kt | 4 +++ .../scenario/scene/airoad/AiRoadMarker.kt | 36 +++++++++++++++++-- .../scene/road/V2XRoadEventMarker.java | 2 +- 6 files changed, 50 insertions(+), 4 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 6d3d91396b..63a09fe752 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -34,6 +34,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView; +import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -138,6 +139,7 @@ public abstract class BaseBusTabFragment //切换地图的远近视图 if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) { MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); + AiRoadMarker.INSTANCE.restore(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); } else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) { @@ -145,10 +147,12 @@ public abstract class BaseBusTabFragment .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + AiRoadMarker.INSTANCE.clear(); } else { MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + AiRoadMarker.INSTANCE.restore(); } } }); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 34b8898d5f..7c61e35c1e 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IViewNotification; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; +import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker; import com.mogo.eagle.core.utilcode.util.OverlayViewUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMapUIController; @@ -135,14 +136,17 @@ public class TaxiPassengerBaseFragment extends MvpFragment $isTrigger") if (isTrigger) { marker.set(top) - marker(top) + marker(top, true) } else { synchronized(markers) { markers.remove(top) @@ -187,7 +187,7 @@ object AiRoadMarker { } } - fun marker(marker: Marker) { + fun marker(marker: Marker, drawMarker: Boolean) { val location = carLocation.get() ?: return //施工中心点前方的自车行驶方向上300米距离 val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f) @@ -239,7 +239,9 @@ object AiRoadMarker { return } removeLine() - marker.entity?.apply { V2XAiRoadEventMarker.drawMarkers(this) } + if (drawMarker) { + marker.entity?.apply { V2XAiRoadEventMarker.drawMarkers(this) } + } val evaluator = ArgbEvaluator() val interceptor = DecelerateInterpolator(1.5f) val total = points.size @@ -275,11 +277,39 @@ object AiRoadMarker { } fun unMarker(marker: Marker) { + Logger.d(TAG, "--- unMarker ---") markers -= marker removeLine() V2XAiRoadEventMarker.removeMarkers(null) } + fun clear() { + hideLine() +// V2XAiRoadEventMarker.removeMarkers(null) + } + + fun restore() { + showLine() + val marker = marker.get() + if (marker != null) { + marker(marker, false) + } + } + + private fun hideLine() { + val old = line.get() + if (old != null && !old.isDestroyed) { + old.isVisible = false + } + } + + private fun showLine() { + val old = line.get() + if (old != null && !old.isDestroyed) { + old.isVisible = true + } + } + private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { return !isFrontOfCar(markerLon, markerLat, carLon, carLat, carAngle) } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java index 9ed04ecba2..13f257eea0 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java @@ -83,7 +83,7 @@ public class V2XRoadEventMarker implements IV2XMarker { MarkerLocation location = noveltyInfo.getLocation(); AiRoadMarker.Marker m = new AiRoadMarker.Marker(gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity); mMarker = m; - AiRoadMarker.INSTANCE.marker(m); + AiRoadMarker.INSTANCE.marker(m, true); } }