diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt index 616638f90e..b62c0c066e 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt @@ -483,6 +483,7 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb }) } + AiRoadMarker.receive(Marker(this.roadwork?.center?.point?.lat ?: 0.0, this.roadwork?.center?.point?.lon ?: 0.0, this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0, null, null, null)) } // private fun buildRoadEntity(e: V2XMarkerExploreWay, extra: Map? = null): V2XRoadEventEntity { // 记录道路事件 diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 5e23c6f763..818d5edce8 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad import android.animation.* import android.content.* import android.graphics.* +import android.os.* import android.view.animation.* import androidx.core.util.Pair import androidx.lifecycle.* @@ -22,6 +23,7 @@ import com.mogo.map.overlay.* import com.mogo.module.common.entity.* import com.mogo.module.common.utils.* import io.netty.util.internal.* +import java.lang.Runnable import java.util.* import java.util.concurrent.* import java.util.concurrent.atomic.* @@ -49,6 +51,17 @@ object AiRoadMarker { private val START_COLOR = Color.parseColor("#002ABAD9") private val END_COLOR = Color.parseColor("#66FF7A30") + private val handler by lazy { + Handler(Looper.getMainLooper()) + } + + private val checkExpiredTask = Runnable { + val marker = this@AiRoadMarker.marker.get() + if (marker != null) { + unMarker(marker) + } + } + private val markers = ConcurrentSet() private val options by lazy { @@ -189,6 +202,7 @@ object AiRoadMarker { fun marker(marker: Marker, drawMarker: Boolean) { val location = carLocation.get() ?: return + this.marker.set(marker) //施工中心点前方的自车行驶方向上300米距离 val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f) //施工中心点后方的自车行驶方向上300米距离 @@ -319,6 +333,25 @@ object AiRoadMarker { return degree < 90 } + fun receive(marker: Marker) { + val cur = this.marker.get() + if (cur == marker) { + val poi = this.marker.get() + val car = this.carLocation.get() + if (poi != null && car != null) { + val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) + if (distance < 300) { + checkExpired() + } + } + } + } + + private fun checkExpired() { + handler.removeCallbacks(checkExpiredTask) + handler.postDelayed(checkExpiredTask, 5000) + } + data class Marker( val poi_lat: Double, val poi_lon: Double,