[SweeperCloud] fix: 之前添加高精地图Marker时,起点/终点 Marker为了避免重复添加 是 删除-增加起点-增加终点,但是因为都是异步操作,会导致先添加里面删除的问题,这里将3个操作放入一个Runnable同步操作;

This commit is contained in:
aibingbing
2023-07-28 22:52:05 +08:00
parent e27c98d930
commit a0322eeebe

View File

@@ -218,7 +218,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
//恢复高精地图上的Marker
mCurrentRunningSubTaskInfo?.also {
removeHDMapMarkerBySubTask(it)
addHDMapMarkerBySubTask(it)
}
} else {//云端下发的大任务信息需要弹窗提示V3.2.0开始不需要安全员确认接取任务,只能默认接收)
@@ -280,7 +279,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
updateCurrentSubTaskInfo(index + 1)
// 先移除在添加 起终点 Marker
removeHDMapMarkerBySubTask(subTaskList[index])
addHDMapMarkerBySubTask(subTaskList[index])
} else {
mCurrentRunningSubTaskInfo = null
@@ -884,26 +882,37 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
val endPoint = subTask.endLocation
val hdMarkerIdStart = "marker_sweeper_subtask_${subTask.subTaskId}_start"
val hdMarkerIdEnd = "marker_sweeper_subtask_${subTask.subTaskId}_end"
setMapMaker(hdMarkerIdStart, startPoint.longitude, startPoint.latitude, true)
setMapMaker(hdMarkerIdEnd, endPoint.longitude, endPoint.latitude, false)
val setStartMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdStart, startPoint.longitude, startPoint.latitude, true)
val setEndMarkerRunnable = createSetHDMapMakerRunnable(hdMarkerIdEnd, endPoint.longitude, endPoint.latitude, false)
val removeMarkerRunnable = createRemoveHDMapMakerRunnable()
val addSubTaskHDMarkRunnable = Runnable {
// 先移除高精地图中的 子任务 起终点 Marker, 避免重复添加
removeMarkerRunnable.run()
setStartMarkerRunnable.run()
setEndMarkerRunnable.run()
}
OCHThreadPoolManager.getsInstance().execute(addSubTaskHDMarkRunnable)
}
/**
* 移除高精地图中的 子任务 起终点 Marker
*/
private fun removeHDMapMarkerBySubTask(subTask: SubTaskInfo) {
removeMapMaker()
private fun removeHDMapMarkerBySubTask(subTaskInfo: SubTaskInfo) {
val removeMarkerRunnable = createRemoveHDMapMakerRunnable()
OCHThreadPoolManager.getsInstance().execute(removeMarkerRunnable)
}
/**
* 设置高精地图里的Marker
* 设置高精地图里的Marker Runnable
*/
private fun setMapMaker(
private fun createSetHDMapMakerRunnable(
uuid: String,
longitude: Double,
latitude: Double,
isStartMarker: Boolean
) {
) : Runnable {
//开启线程执行起终点marker设置
val setMapMarkerRunnable = Runnable {
CallerLogger.d(
@@ -934,13 +943,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
overlayManager?.showOrUpdatePoint(builder.build())
}
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable)
return setMapMarkerRunnable
}
/**
* 移除高精地图里的Marker
* 移除高精地图里的Marker Runnable
*/
private fun removeMapMaker() {
private fun createRemoveHDMapMakerRunnable() : Runnable{
//开启线程移除起终点marker设置
val removeMapMarkerRunnable = Runnable {
CallerLogger.d(
@@ -950,6 +959,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
overlayManager?.removeAllPointsInOwner(TYPE_MARKER_SWEEPER_SUBTASK_START_END)
}
OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable)
return removeMapMarkerRunnable
}
}