From 94de2bf3222c627008277f40e93d51543e8a9eff Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 15 Jul 2024 19:41:04 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6]?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E8=B7=AF=E5=8F=A3=E8=A7=86=E8=A7=92?= =?UTF-8?q?=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 --- .../angle/MoGoVisualAngleChangeProvider.kt | 56 +++++++++++++------ 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt index a7734a2868..d947b3ea98 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt @@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener import com.mogo.eagle.core.function.call.autopilot.* import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.utilcode.kotlin.* +import com.mogo.map.MapDataWrapper import com.zhidaoauto.map.data.road.StopLine import com.zhidaoauto.map.sdk.open.common.tools.MapTools import kotlinx.coroutines.* @@ -45,14 +46,15 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { private val listener = object : IMoGoMapRoadListener { private val roadId = AtomicReference() private val triggerRoadId = AtomicReference() - + private var inCrossRoad = false override fun onRoadIdInfo(roadId: String) { this.roadId.set(roadId) Log.d(TAG, "-- onRoadIdInfo --: prev: ${this.triggerRoadId.get()} -> curr: $roadId") - val loc = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val loc = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() var triggerClose = false - val distance = distanceOfCarToStopLine.get() + 5 + var distance = distanceOfCarToStopLine.get() if (hasCrossRoad && distance > 0) { + distance += 3.0 val prev = triggerLocation.get() if (prev != null) { travelled.set(MapTools.distance(loc.longitude, loc.latitude, prev.longitude, prev.latitude) + travelled.get()) @@ -60,19 +62,34 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { } val oldRoadId = triggerRoadId.get() Log.d(TAG, "-- onRoadIdInfo --: travelled --: ${travelled.get()}") - if ((travelled.get() > distance) && oldRoadId != roadId) { - distanceOfCarToStopLine.set(0.0) - hasCrossRoad = false - triggerRoadId.set(null) - travelled.set(0.0) - triggerLocation.set(null) - Log.d(TAG, "-- onRoadIdInfo --: trigger close --") - triggerClose = true + if ((travelled.get() > distance)) { + val cross = MapDataWrapper.getCrossRoad(loc.longitude, loc.latitude, loc.heading) + Log.d(TAG, "-- onRoadIdInfo --: cross --: ${cross?.status}") + if (cross?.status == 1) { + if (!inCrossRoad) { + inCrossRoad = true + } + } else { + if (inCrossRoad) { + triggerClose = true + } + if (!triggerClose && roadId != "0" && oldRoadId != null && oldRoadId != roadId) { + triggerClose = true + } + } + + if (triggerClose) { + Log.d(TAG, "-- onRoadIdInfo --: trigger close --") + distanceOfCarToStopLine.set(0.0) + hasCrossRoad = false + triggerRoadId.set(null) + travelled.set(0.0) + triggerLocation.set(null) + inCrossRoad = false + changeScene(Default()) + } } } - if (triggerClose) { - changeScene(Default()) - } } @@ -80,11 +97,16 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { Log.d(TAG, "-- onStopLineInfo --: ${info.distance}") if (!hasCrossRoad && info.distance <= 80.0) { hasCrossRoad = true - triggerRoadId.set(this.roadId.get()) - distanceOfCarToStopLine.set(info.distance) - triggerLocation.set(CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()) changeScene(CrossRoad(2)) } + if (hasCrossRoad && triggerRoadId.get() == null && info.distance <= 20) { + val roadId = this.roadId.get() + if (roadId != null && roadId != "0") { + triggerRoadId.set(this.roadId.get()) + distanceOfCarToStopLine.set(info.distance) + triggerLocation.set(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()) + } + } } }