From f3e9de10d060f8f1195e13616a1c0179bd322bae Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 13 Jul 2023 19:58:29 +0800 Subject: [PATCH] =?UTF-8?q?[3.4.0][=E8=A7=86=E8=A7=92]=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=97=8B=E8=BD=AC=E5=8A=A8=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XRoadEventScenario.java | 2 +- .../angle/MoGoVisualAngleChangeProvider.kt | 22 +++++-------------- .../core/function/api/map/angle/Scenes.kt | 4 ++-- .../uicontroller/IMogoMapUIController.java | 13 +++++++++++ .../java/com/mogo/map/AMapViewWrapper.java | 7 ++++++ .../com/mogo/map/MogoMapUIController.java | 7 ++++++ .../map/uicontroller/AMapUIController.java | 7 ++++++ 7 files changed, 42 insertions(+), 20 deletions(-) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java index 7c8c9d13fc..5a8928a2e0 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/scenario/scene/road/V2XRoadEventScenario.java @@ -160,7 +160,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp if (isNeedChangeAngle()) { MarkerLocation location = content.getLocation(); if (location != null) { - CallerVisualAngleManager.INSTANCE.changeAngle(new RoadEvent(content.getLocation().getLon(), content.getLocation().getLat(), content.getLocation().getAngle())); + CallerVisualAngleManager.INSTANCE.changeAngle(new RoadEvent(content.getLocation().getLon(), content.getLocation().getLat(), content.getLocation().getAngle(), false)); } } if (entity.isNeedAddLine() && !EventTypeEnumNew.TYPE_SOCKET_ROAD_CONGESTION.getPoiType().equals(content.getPoiType())) { 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 fc2b8cb89d..4f2babd099 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 @@ -7,21 +7,14 @@ import androidx.lifecycle.* import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.Lifecycle.Event.ON_DESTROY import com.alibaba.android.arouter.facade.annotation.Route -import com.mogo.eagle.core.data.config.* import com.mogo.eagle.core.data.constants.MogoServicePaths -import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.function.api.map.angle.* import com.mogo.eagle.core.function.api.map.angle.Scene -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.eagle.core.utilcode.mogo.* -import com.mogo.eagle.core.utilcode.mogo.logger.* -import com.zhidaoauto.map.sdk.open.tools.* import kotlinx.coroutines.* import kotlinx.coroutines.android.* import java.util.* -import java.util.concurrent.atomic.* @Route(path = MogoServicePaths.PATH_VISUAL_ANGLE) class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { @@ -193,31 +186,26 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { } } - @OptIn(InternalCoroutinesApi::class) private fun doChangeAngle(record: Record) { val angle = record.target.angle CallerMapUIServiceManager.getMapUIController()?.also { Log.d(TAG, "--- doChangeAngle ---: ${record.target}") if (record.target !is Default) { record.isDisplay = true - kotlinx.coroutines.internal.synchronized(queue) { + synchronized(queue) { queue += record } } if (record.target is Default && roadEventFlag) { roadEventFlag = false - //it.setLockMode(true) + it.setLockMode(true) } if (record.target is RoadEvent) { it.setLockMode(false) roadEventFlag = true - Log.d("TTTTTT", "scene:${record.target}") - // scope.launch { - // delay(500) - // it.changeMapVisualAngle(angle, null) - // } - it.animateTo(record.target.poi_lon, record.target.poi_lat, record.target.poi_angle.toFloat(), 1000, true) - // it.animateTo(record.target.poi_lon, record.target.poi_lat, 0f, 1000, true) + scope.launch { + it.animateTo(0.0 ,0.0,1f, 0f ,11.5f,28f,3000,true) + } } else { it.changeMapVisualAngle(angle, null) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/Scenes.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/Scenes.kt index 332cc68a34..8e6d2c6f06 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/Scenes.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/Scenes.kt @@ -37,14 +37,14 @@ class Default(val delay: Long = 2, val unit: TimeUnit = SECONDS): Scene() { /** * 道路事件 */ -class RoadEvent(val poi_lon: Double, val poi_lat: Double, val poi_angle: Double): Scene() { +class RoadEvent(val poi_lon: Double, val poi_lat: Double, val poi_angle: Double, val isGps: Boolean = true): Scene() { override val angle: VisualAngleMode = VisualAngleMode.MODE_LONG_SIGHT override val priority: Int = 5 override val displayThreshold: Long - get() = SECONDS.toMillis(5) + get() = SECONDS.toMillis(8) override fun toString(): String { return "RoadEvent(priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority}, lon: $poi_lon, lat: $poi_lat, angle: $poi_angle)" diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index c085db8d5d..806c12dd4b 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -389,4 +389,17 @@ public interface IMogoMapUIController { * @param isGps 是否是高精坐标 */ void animateTo(double lon, double lat, float rotateAngle, int duration, boolean isGps); + + + /** + * 自动切换视角到指定点,包含过渡动画,并持续指定duration毫秒 + * + * @param lon 经度 + * @param lat 纬度 + * @param v1 旋转角度 + * @param v2 持续时间 + * @param v3 + * @param v4 + */ + void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps); } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 894daf3877..a01b9faa77 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -1161,4 +1161,11 @@ public class AMapViewWrapper implements IMogoMapView, mMapView.getMapAutoViewHelper().animateTo(lon, lat, rotateAngle, duration, isGps); } } + + @Override + public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) { + if (mMapView.getMapAutoViewHelper() != null) { + mMapView.getMapAutoViewHelper().animateTo(lon, lat, v1, v2, v3, v4, duration, isGps); + } + } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index 81a63699ef..d2e239d2b1 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -512,4 +512,11 @@ public class MogoMapUIController implements IMogoMapUIController { mDelegate.animateTo(lon, lat, rotateAngle, duration, isGps); } } + + @Override + public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) { + if (mDelegate != null) { + mDelegate.animateTo(lon, lat, v1, v2, v3, v4, duration, isGps); + } + } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java index 048f3c50be..7936a87a64 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java @@ -449,4 +449,11 @@ public class AMapUIController implements IMogoMapUIController { mClient.animateTo(lon, lat, rotateAngle, duration, isGps); } } + + @Override + public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) { + if (mClient != null) { + mClient.animateTo(lon, lat, v1, v2, v3, v4, duration, isGps); + } + } }