diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt index 477907fe24..7fc28492d1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/DecisionLayout.kt @@ -191,8 +191,11 @@ class DecisionLayout @JvmOverloads constructor( @Volatile private var lastUpdateTime = 0L + @Volatile + private var triggerRoadId = "" override fun onStopLineInfo(info: StopLine) { if (info.distance < 15 && !isInCrossRoad) {// 不在路口内且距离停止线小于15m + triggerRoadId = lastRoadId isCrossScene = true val time = System.currentTimeMillis() if (time - lastUpdateTime > 500) { @@ -215,11 +218,21 @@ class DecisionLayout @JvmOverloads constructor( } @Volatile - private var isInCrossRoad = false + private var lastRoadId = "" + override fun onRoadIdInfo(roadId: String) { + lastRoadId = roadId + if (roadId != "0" && triggerRoadId.isNotEmpty() && triggerRoadId != roadId) { + isCrossScene = false + triggerRoadId = "" + } + } + @Volatile + private var isInCrossRoad = false override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) { if (isInCrossRoad && !cross) {// 上次在路口内,当前不在路口内,则代表出路口了 isCrossScene = false + triggerRoadId = "" val time = System.currentTimeMillis() if (time - lastUpdateTime > 500) { lastUpdateTime = time