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 c942ef6173..c0f26e90e5 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 @@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.function.angle.scenes.CrossRoad import com.mogo.eagle.core.function.angle.scenes.Default +import com.mogo.eagle.core.function.angle.scenes.LongSight import com.mogo.eagle.core.function.angle.scenes.Roma import com.mogo.eagle.core.function.api.map.angle.* import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider.OnMoGoVisualAngleSceneChangeListener @@ -42,6 +43,8 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { private val prevScene by lazy { AtomicReference() } + private var timerJob: Job? = null + private val listener = object : IMoGoMapRoadListener { private val roadId = AtomicReference() private val triggerRoadId = AtomicReference() @@ -187,7 +190,7 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { private fun doChangeAngle(target: Scene) { val angle = target.getVisualAngleMode() - CallerMapUIServiceManager.getMapUIController()?.also { + CallerMapUIServiceManager.getMapUIController()?.also { itx -> Log.d(TAG, "--- doChangeAngle ---: $target") val prev = prevScene.get() try { @@ -204,7 +207,23 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { DOWN -> CallerMapUIServiceManager.getMapUIController()?.setScreenToOriginDis(5.0f) } if (target !is Roma) { - it.changeMapVisualAngle(angle, null) + if (target is LongSight) { + timerJob?.safeCancel() + scope.launch { + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(false) + itx.changeMapVisualAngle(angle, null) + delay(3000) + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true) + }.also { + it.invokeOnCompletion { + CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true) + } + timerJob = it + } + } else { + timerJob?.safeCancel() + itx.changeMapVisualAngle(angle, null) + } } } finally { if (prev == null || prev.javaClass != target.javaClass) {