From abb4ed32992ad7a0218cec8fed2aabf8fbdc0927 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 13 Jun 2025 17:11:18 +0800 Subject: [PATCH] =?UTF-8?q?[8.0.2]=E8=A7=84=E5=88=92=E4=B8=8E=E5=86=B3?= =?UTF-8?q?=E7=AD=96=E5=8A=9F=E8=83=BD=E7=9A=84UI=E6=95=88=E6=9E=9C?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/ui/homepage/HomeViewModel.kt | 2 +- .../identify/MapIdentifySubscriber.kt | 20 ++++--- .../routeoverlay/PredictionDataManager.kt | 9 ++-- .../function/view/CoordinateAnimationView.kt | 53 ++++++++++++------- .../layout/layout_prediction_container.xml | 24 --------- .../core/data/config/FunctionBuildConfig.kt | 2 +- .../java/com/mogo/map/utils/ObjectUtils.java | 33 +++++++----- 7 files changed, 76 insertions(+), 67 deletions(-) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt index 355b465fd2..fcd3470973 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/homepage/HomeViewModel.kt @@ -54,7 +54,7 @@ class HomeViewModel : ViewModel(), BridgeListener, OrderListener { checkScreenChange() } - fun checkScreenChange(){ + private fun checkScreenChange(){ CallerLogger.d(TAG,"havePredictionInfos:${havePredictionInfos}--haveTrajectoryInfos:${haveTrajectoryInfos}--order:${order}") if(order!=null&&havePredictionInfos&&havePredictionInfos){ FunctionBuildConfig.isDrawDecIdentifyData = true diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt index 6c1555cac0..e5c942f89b 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt @@ -119,15 +119,15 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, PredictionDataManager.getInstance()?.updateData(carPoiList1!!, 0) PredictionDataManager.getInstance()?.updateData(carPoiList2!!, 2) } else { - if (preObj.predictionTrajectoryList.isNullOrEmpty() || isUnKnownType(preObj.classtype) || mogoMap == null) return@forEach + if (isUnKnownType(preObj.classtype) || preObj.predictionTrajectoryList.isNullOrEmpty() || mogoMap == null) return@forEach point = preObj.predictionTrajectoryList[0].trajectoryPointsList[0] arr = mogoMap.switchData(point.x, point.y, false) arr?.let { lonLatArr -> val distance = com.mogo.eagle.core.utilcode.util.LocationUtils.getDistance(getWgs84Lat(), getWgs84Lon(), lonLatArr[1], lonLatArr[0]) - if (distance > 30) return@forEach + if (distance > 28) return@forEach } preObj.predictionTrajectoryList[0].trajectoryPointsList.forEachIndexed { index, point -> - if (index > 9 && index % 2 == 0) {// 步长为2,减少点 + if (index in 0..44 && index % 2 == 0) {// 步长为2,减少点 arr = mogoMap.switchData(point.x, point.y, false) arr?.let { lonLatArr -> points.add(MogoLatLng(lonLatArr[1], lonLatArr[0])) @@ -146,9 +146,17 @@ class MapIdentifySubscriber private constructor() : IMoGoSubscriber, } private fun isUnKnownType(classType: Int): Boolean { - val type: TrackedObjectType = TrackedObjectType.forNumber(classType) ?: return true - var classID: TrackedObjectClassID? = typeMap[type] ?: return true - return false + val type: TrackedObjectType? = TrackedObjectType.forNumber(classType) + return when (type) { + null, TrackedObjectType.TYPE_UNKNOWN, TrackedObjectType.TYPE_UNKNOWN_SMALL, + TrackedObjectType.TYPE_UNKNOWN_BIG, TrackedObjectType.TYPE_UNKNOWN_STATIC, + TrackedObjectType.TYPE_UNKNOWN_DYNAMIC, TrackedObjectType.UNRECOGNIZED -> { + true + } + else -> { + false + } + } } fun renderAiCloudResult(cloudData: List, mapInstance:String = MogoMap.DEFAULT) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionDataManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionDataManager.kt index 07b9736c4d..d2ebb603bf 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionDataManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/PredictionDataManager.kt @@ -80,11 +80,12 @@ class PredictionDataManager private constructor() { val lonLatList = ArrayList() var arr: DoubleArray? var point: android.graphics.Point? - list.forEach { - arr = mogoMap.switchData(it.x, it.y, false)// UTM转wgs84 - if (arr == null || arr!!.size < 2) return@forEach + list.forEachIndexed { index, poi -> + if (index > 45) return@forEachIndexed + arr = mogoMap.switchData(poi.x, poi.y, false)// UTM转wgs84 + if (arr == null || arr!!.size < 2) return@forEachIndexed point = mogoMap.toScreenLocation(arr!![0], arr!![1])// wgs84转屏幕坐标 - if (point == null) return@forEach + if (point == null) return@forEachIndexed lonLatList.add(point!!) Log.d(TAG, "预测数据的屏幕坐标为:(${point!!.x},${point!!.y})") } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/CoordinateAnimationView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/CoordinateAnimationView.kt index f1c4aad045..81b31ee817 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/CoordinateAnimationView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/CoordinateAnimationView.kt @@ -13,6 +13,7 @@ import android.util.AttributeSet import android.util.Log import android.view.SurfaceHolder import android.view.SurfaceView +import android.view.View import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.map.R @@ -57,13 +58,15 @@ class CoordinateAnimationView @JvmOverloads constructor( @Volatile private var isRunning = false + @Volatile + private var isVisible = false private var bezierPath: Path? = null // 贝塞尔曲线路径 private var curvePaint: Paint? = null private var carPaint: Paint? = null // private var circlePaint: Paint? = null private var visibleRect: RectF? = null // 可见区域 - private var strokeWidth = 22f + private var strokeWidth = 16f private var carBitmap: Bitmap? = null @@ -155,8 +158,8 @@ class CoordinateAnimationView @JvmOverloads constructor( private fun getOriginBitmap(resId: Int, desWidth: Int, desHeight: Int): Bitmap { val bitmap = BitmapFactory.decodeResource(resources, resId) - val scaleWidth = (bitmap.width * 1.6).toInt() - val scaleHeight = (bitmap.height * 1.6).toInt() + val scaleWidth = (bitmap.width * 2) + val scaleHeight = (bitmap.height * 2) Log.d(TAG, "$index-Bitmap width:$scaleWidth,height:$scaleHeight") return Bitmap.createScaledBitmap( bitmap, scaleWidth, @@ -177,6 +180,10 @@ class CoordinateAnimationView @JvmOverloads constructor( // return BitmapFactory.decodeResource(resources, resId, options) } + fun setVisible(isVisible: Boolean) { + this.isVisible = isVisible + } + override fun surfaceCreated(holder: SurfaceHolder) { animationThread = AnimationThread() animationThread!!.start() @@ -209,6 +216,14 @@ class CoordinateAnimationView @JvmOverloads constructor( controlPoints = null } + override fun onVisibilityChanged(changedView: View, visibility: Int) { + super.onVisibilityChanged(changedView, visibility) + val name = changedView.javaClass.simpleName + if (name == TAG || name == "ConstraintLayout") { + isVisible = visibility == View.VISIBLE + } + } + override fun screenPointsChanged(data: FloatArray, index: Int) { if (index == this.index) { updatePoints(data) @@ -664,21 +679,23 @@ class CoordinateAnimationView @JvmOverloads constructor( lastUpdateTime = System.currentTimeMillis() while (isRunning) { - canvas = null - try { - canvas = surfaceHolder!!.lockCanvas() - synchronized(surfaceHolder!!) { - // 绘制 - Log.d(TAG, "$index-准备绘制!") - // 清屏 - canvas?.drawColor(Color.rgb(231, 235, 238)) - drawMovingDashedPath(canvas) - drawPath(canvas) - drawCar(canvas) - } - } finally { - if (canvas != null) { - surfaceHolder!!.unlockCanvasAndPost(canvas) + if (isVisible) { + canvas = null + try { + canvas = surfaceHolder!!.lockCanvas() + synchronized(surfaceHolder!!) { + // 绘制 + Log.d(TAG, "$index-准备绘制!") + // 清屏 + canvas?.drawColor(Color.rgb(231, 235, 238)) + drawMovingDashedPath(canvas) + drawPath(canvas) + drawCar(canvas) + } + } finally { + if (canvas != null) { + surfaceHolder!!.unlockCanvasAndPost(canvas) + } } } diff --git a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_prediction_container.xml b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_prediction_container.xml index 9c3b13b693..e54dea85ab 100644 --- a/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_prediction_container.xml +++ b/core/function-impl/mogo-core-function-map/src/main/res/layout/layout_prediction_container.xml @@ -6,30 +6,6 @@ android:layout_height="match_parent" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> - - - - - - - - - - - - - - - - - - - - - - - - sTypeMap = Map.of(//最低得JDK9,注意换成new HashMap<> -// Adas.TrackedObjectType.TYPE_PEDESTRIAN, Adas.TrackedObjectClassID.Person, -// Adas.TrackedObjectType.TYPE_MOTOR, Adas.TrackedObjectClassID.MotorCycle, -// Adas.TrackedObjectType.TYPE_BICYCLE, Adas.TrackedObjectClassID.Bicycle, -// Adas.TrackedObjectType.TYPE_CAR, Adas.TrackedObjectClassID.Car, -// Adas.TrackedObjectType.TYPE_TRUCK, Adas.TrackedObjectClassID.Truck, -// Adas.TrackedObjectType.TYPE_BUS, Adas.TrackedObjectClassID.Bus, -// Adas.TrackedObjectType.TYPE_WARNINGTRIANGLE, Adas.TrackedObjectClassID.WarningTriangle, -// Adas.TrackedObjectType.TYPE_ROADWORK_OCCUPY_0501, Adas.TrackedObjectClassID.RoadWork_occupy_0501, -// Adas.TrackedObjectType.TYPE_ROADWORK_BREAK_0502, Adas.TrackedObjectClassID.RoadWork_break_0502, -// Adas.TrackedObjectType.TYPE_ROAD_CONGESTION, Adas.TrackedObjectClassID.ROAD_CONGESTION -// ); + private static final Map sTypeMap = new HashMap<>(); + + static { + // 初始化类型映射 + sTypeMap.put(Adas.TrackedObjectType.TYPE_PEDESTRIAN, Adas.TrackedObjectClassID.Person); + sTypeMap.put(Adas.TrackedObjectType.TYPE_MOTOR, Adas.TrackedObjectClassID.MotorCycle); + sTypeMap.put(Adas.TrackedObjectType.TYPE_BICYCLE, Adas.TrackedObjectClassID.Bicycle); + sTypeMap.put(Adas.TrackedObjectType.TYPE_CAR, Adas.TrackedObjectClassID.Car); + sTypeMap.put(Adas.TrackedObjectType.TYPE_TRUCK, Adas.TrackedObjectClassID.Truck); + sTypeMap.put(Adas.TrackedObjectType.TYPE_BUS, Adas.TrackedObjectClassID.Bus); + sTypeMap.put(Adas.TrackedObjectType.TYPE_WARNINGTRIANGLE, Adas.TrackedObjectClassID.WarningTriangle); + sTypeMap.put(Adas.TrackedObjectType.TYPE_ROADWORK_OCCUPY_0501, Adas.TrackedObjectClassID.RoadWork_occupy_0501); + sTypeMap.put(Adas.TrackedObjectType.TYPE_ROADWORK_BREAK_0502, Adas.TrackedObjectClassID.RoadWork_break_0502); + sTypeMap.put(Adas.TrackedObjectType.TYPE_ROAD_CONGESTION, Adas.TrackedObjectClassID.ROAD_CONGESTION); + } public static MarkerOptions fromMogo(Point.Options opt, MapAutoView mapAutoView) { @@ -226,7 +230,10 @@ public class ObjectUtils { if (type == null) { type = Adas.TrackedObjectType.TYPE_UNKNOWN; } - Adas.TrackedObjectClassID classID = Adas.TrackedObjectClassID.Unknown; + Adas.TrackedObjectClassID classID = sTypeMap.get(type); + if (classID == null) { + classID = Adas.TrackedObjectClassID.Unknown; + } return classID.getNumber(); }