diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt index 0d91542d7b..4caa7e4038 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt @@ -32,18 +32,18 @@ class PerspectiveSwitchView @JvmOverloads constructor( override fun onClick(v: View?) { //切换地图的远近视图 if (MogoMapUIController.getInstance().currentMapVisualAngle.isLongSight) { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) - .visibleAllMarkers() +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) +// .visibleAllMarkers() MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) textSwitch.setText(R.string.module_map_model_normal) } else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) - .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS) +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) +// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS) MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null) textSwitch.setText(R.string.module_map_model_faster) } else { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) - .visibleAllMarkers() +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) +// .visibleAllMarkers() MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) textSwitch.setText(R.string.module_map_model_normal) } 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/impl/V2XScenarioManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java index 226a7043d8..800293f761 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/impl/V2XScenarioManager.java @@ -6,6 +6,7 @@ import android.content.Intent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; +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.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; @@ -62,6 +63,7 @@ public class V2XScenarioManager implements IV2XScenarioManager { Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION); intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent); + AiRoadMarker.INSTANCE.clear(); // 如果没有拿到之前的,根据类型分发 switch (v2XMessageEntity.getType()) { case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING: 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..56be98086e 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米距离 @@ -285,7 +299,7 @@ object AiRoadMarker { fun clear() { hideLine() -// V2XAiRoadEventMarker.removeMarkers(null) + V2XAiRoadEventMarker.removeMarkers(null) } fun restore() { @@ -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, diff --git a/gradle.properties b/gradle.properties index 7bcdb6b808..0c3001c60b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -85,7 +85,7 @@ MOGO_LOCATION_VERSION=1.4.3.26 MOGO_TELEMATIC_VERSION=1.4.3.26 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.5.1.9 +MAP_SDK_VERSION=2.6.0.10 MAP_SDK_OPERATION_VERSION=1.1.2.4 # websocket WEBSOCKET_VERSION=1.1.7