[SweeperCloud]refactor: 添加HD Marker使用wgsLocation;

feat: 添加 增加/删除 高级地图Markder 的Mock;
This commit is contained in:
aibingbing
2023-07-29 15:13:25 +08:00
parent a0322eeebe
commit 171b49eb62
4 changed files with 98 additions and 3 deletions

View File

@@ -59,6 +59,7 @@ import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Random;
import mogo.telematics.pad.MessagePad;
@@ -213,6 +214,24 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
findViewById(R.id.btnSendTaskStatus).setOnClickListener(view ->
SweeperCloudTaskUtils.mockSendCloudBigTaskStatus()
);
// 模拟 添加高精地图Marker
findViewById(R.id.btnAddHDMarker).setOnClickListener(view -> {
// 坐标地址:湖南省衡阳市雁峰区金龙坪街道科学城大道衡山科学城停车场
SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_start",
112.57742887355035,
26.82068193910221,
true);
// 坐标地址:湖南省衡阳市雁峰区岳屏镇雁鸣路
SweeperCloudTaskUtils.mockAddHdMarker("marker_sweeper_subtask_123_end",
112.56666738544979,
26.822879976829867,
false);
}
);
// 模拟 移除高精地图Marker
findViewById(R.id.btnRemoveHDMarker).setOnClickListener(view ->
SweeperCloudTaskUtils.mockRemoveHDMarker()
);
mTrafficDataView.getSpeedImage().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {

View File

@@ -883,8 +883,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
val hdMarkerIdStart = "marker_sweeper_subtask_${subTask.subTaskId}_start"
val hdMarkerIdEnd = "marker_sweeper_subtask_${subTask.subTaskId}_end"
val setStartMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdStart, startPoint.longitude, startPoint.latitude, true)
val setEndMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdEnd, endPoint.longitude, endPoint.latitude, false)
val setStartMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdStart, startPoint.wgsLongitude, startPoint.wgsLatitude, true)
val setEndMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdEnd, endPoint.wgsLongitude, endPoint.wgsLatitude, false)
val removeMarkerRunnable = createRemoveHDMapMakerRunnable()
val addSubTaskHDMarkRunnable = Runnable {

View File

@@ -1,15 +1,22 @@
package com.mogo.och.sweepercloud.util
import android.content.Context
import android.util.Log
import com.elegant.utils.UiThreadHandler
import com.google.protobuf.MessageOrBuilder
import com.google.protobuf.TextFormat
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.map.overlay.core.Level
import com.mogo.map.overlay.point.Point
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.OCHThreadPoolManager
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.sweepercloud.R
import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener
import com.mogo.och.sweepercloud.constant.SweeperConst
import com.mogo.och.sweepercloud.model.SweeperTaskModel
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType
@@ -232,6 +239,53 @@ object SweeperCloudTaskUtils {
}, 10000)
}
/**
* 模式添加高精地图Marker
*/
@JvmStatic
fun mockAddHdMarker(uuid: String, longitude: Double, latitude: Double, isStartMarker: Boolean) {
//开启线程执行起终点marker设置
val setMapMarkerRunnable = Runnable {
val builder =
Point.Options.Builder(SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END, Level.MAP_MARKER)
.setId(uuid)
.anchor(0.5f, 0.5f)
.set3DMode(true)
.isUseGps(true)
.controlAngle(true)
.icon3DRes(if (isStartMarker) R.raw.star_marker else R.raw.end_marker)
.longitude(longitude)
.latitude(latitude)
val mapUIController = CallerMapUIServiceManager.getMapUIController()
if (mapUIController != null) {
val centerLine = mapUIController.getCenterLineInfo(longitude, latitude, -1f)
if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空
val angle = centerLine.angle
if (angle != null) {
builder.rotate(angle.toFloat())
}
}
}
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
Log.d(TAG, "CallerMapUIServiceManager.getOverlayManager()=$overlayManager")
overlayManager?.showOrUpdatePoint(builder.build())
}
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable)
}
/**
* 模拟 移除高精地图Marker
*/
@JvmStatic
fun mockRemoveHDMarker() {
//开启线程移除起终点marker设置
val removeMapMarkerRunnable = Runnable {
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
overlayManager?.removeAllPointsInOwner(SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END)
}
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable)
}
private fun getDriverSn(): String? {
return MoGoAiCloudClientConfig.getInstance().sn
}

View File

@@ -256,13 +256,35 @@
app:layout_constraintRight_toRightOf="@id/btnSendSubtaskStatus"
app:layout_constraintTop_toBottomOf="@id/btnSendSubtaskStatus" />
<Button
android:id="@+id/btnAddHDMarker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"
android:text="添加高精地图Marker"
android:textColor="#f30"
android:textSize="30sp"
app:layout_constraintRight_toRightOf="@id/btnSendTaskStatus"
app:layout_constraintTop_toBottomOf="@id/btnSendTaskStatus" />
<Button
android:id="@+id/btnRemoveHDMarker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"
android:text="移除高精地图Marker"
android:textColor="#a90"
android:textSize="30sp"
app:layout_constraintRight_toRightOf="@id/btnAddHDMarker"
app:layout_constraintTop_toBottomOf="@id/btnAddHDMarker" />
<androidx.constraintlayout.widget.Group
android:id="@+id/groupTestPanel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="btnStartAutopilot,btnQueryCurrentTask,btnSendTask,btnSendSubTaskConfirm,btnSendEndTask
,btnSendSubtaskStatus,btnSendTaskStatus"
,btnSendSubtaskStatus,btnSendTaskStatus,btnAddHDMarker,btnRemoveHDMarker"
tools:visibility="visible" />