[SweeperCloud] fix: 之前添加高精地图Marker时,起点/终点 Marker为了避免重复添加 是 删除-增加起点-增加终点,但是因为都是异步操作,会导致先添加里面删除的问题,这里将3个操作放入一个Runnable同步操作;
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user