[sweeper]

[只展示当前子任务的终点坐标]
This commit is contained in:
yangyakun
2023-03-11 15:06:10 +08:00
parent 614d44b944
commit f1bb1e59fa
6 changed files with 111 additions and 39 deletions

View File

@@ -11,4 +11,5 @@ interface ISweeperTaskDataToFragmentCallback {
fun clearAllMarkerAndPolyline()
fun setProgress(progress:String)
fun setTaskListCoordinatesLatLng(coordinatesLatLng: ArrayList<LatLng>)
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng)
}

View File

@@ -92,6 +92,8 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
private DriverMsgBoxBubbleView mViewDriverMsgBoxBubble;
private ArrayList<WeltDataBean> mWeltDataBeanList;//存储贴边数据
private ArrayList<LatLng> mSubTaskCoordinates;//存储当前大任务的所有子任务起点和终点
// 当前子任务的终点坐标
protected LatLng mCurrentTaskEndStation;
private ArrayList<SweeperRoutePlanningUpdateReqBean.Result> mRouteList;//存储任务的坐标轨迹
private String mProgress;
private ISweeperTaskDataToFragmentCallback mTaskDataToFragmentCallback;
@@ -415,8 +417,14 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
if (isShow) {
mFlWeltMapOverView.setVisibility(View.VISIBLE);
if (mWeltMapOverViewFragment == null) {
mWeltMapOverViewFragment = mWeltMapOverViewFragment.newInstance((IWeltMapSwitchToSmallCallback) this, mWeltDataBeanList,
mSubTaskCoordinates, mRouteList, mProgress, (SweeperFragment) this);
mWeltMapOverViewFragment = mWeltMapOverViewFragment.newInstance(
(IWeltMapSwitchToSmallCallback) this,
mCurrentTaskEndStation,
mWeltDataBeanList,
mSubTaskCoordinates,
mRouteList,
mProgress,
(SweeperFragment) this);
}
if (mWeltMapOverViewFragment.isHidden()) {
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
@@ -476,6 +484,15 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
}
}
public void setCurrentTaskEndMarker(LatLng subTaskCoordinate) {
if (mMapWeltView != null) {
mMapWeltView.setCurrentTaskCoordinatesLatLng(subTaskCoordinate);
}
if (mTaskDataToFragmentCallback != null) {
mTaskDataToFragmentCallback.setCurrentTaskCoordinatesLatLng(subTaskCoordinate);
}
}
/**
* 清除marker标记和任务路线数据
*/

View File

@@ -312,7 +312,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
}
}
}
setEndStationMarker()
}
/**
@@ -477,10 +477,27 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
dataList.add(index+1,endLatLng)
}
setTaskListCoordinatesLatLng(dataList)
setEndStationMarker()
}
}
}
private fun setEndStationMarker(){
lifecycleScope.launch(Dispatchers.IO) {
mSubInfo?.let {
val endPoint = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(
AbsMogoApplication.getApp(),
it.endWgs84Lon,
it.endWgs84Lat
)
super.mCurrentTaskEndStation = endPoint
setCurrentTaskEndMarker(endPoint)
}
}
}
//模拟结束子任务
override fun debugEndSubTask() {
//mPresenter?.onArriveTaskEnd(null)

View File

@@ -41,12 +41,16 @@ class WeltMapOverViewFragment() : BaseFragment(), ISweeperTaskDataToFragmentCall
val bundle = arguments
if (bundle != null) {
val latLngs = bundle.getSerializable("subTaskCoordinates") as? ArrayList<LatLng>
val latLng = bundle.getParcelable<LatLng>("subTaskEndCoordinates")
val weltDataList = bundle.getSerializable("weltDataList") as? ArrayList<WeltDataBean>
val routeList = bundle.getSerializable("routeList") as? ArrayList<SweeperRoutePlanningUpdateReqBean.Result>
val progress = bundle.getString("progress")
routeList?.let {
weltMapOverView.setRouteList(it)
}
latLng?.let {
setCurrentTaskCoordinatesLatLng(it)
}
latLngs?.let {
setTaskListCoordinatesLatLng(it)
}
@@ -64,6 +68,7 @@ class WeltMapOverViewFragment() : BaseFragment(), ISweeperTaskDataToFragmentCall
@JvmStatic
fun newInstance(
mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback,
mCurrentTaskEndStation:LatLng?,
weltDataList: ArrayList<WeltDataBean>?,
latLngs: ArrayList<LatLng>?,
routeList: ArrayList<SweeperRoutePlanningUpdateReqBean.Result>?,
@@ -73,6 +78,7 @@ class WeltMapOverViewFragment() : BaseFragment(), ISweeperTaskDataToFragmentCall
val args = Bundle()
args.putSerializable("weltDataList", weltDataList)
args.putSerializable("subTaskCoordinates", latLngs)
args.putParcelable("subTaskEndCoordinates", mCurrentTaskEndStation)
args.putSerializable("routeList", routeList)
args.putString("progress", progress)
val fragment = WeltMapOverViewFragment()
@@ -101,6 +107,10 @@ class WeltMapOverViewFragment() : BaseFragment(), ISweeperTaskDataToFragmentCall
weltMapOverView.setTaskListCoordinatesLatLng(coordinatesLatLng)
}
override fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
weltMapOverView.setCurrentTaskCoordinatesLatLng(coordinatesLatLng)
}
override fun clearAllMarkerAndPolyline() {
weltMapOverView.clearAllMarkerAndPolyline()
}

View File

@@ -34,7 +34,8 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mAMap: AMap? = null
private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf()
// private val mLineMarkers: MutableList<Marker?> = mutableListOf()
private var mEndStationMarker: Marker? = null
private var mFirst: Boolean = false
//清扫车任务地图
@@ -192,25 +193,32 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
* 绘制起点和终点的marker
*/
private fun drawStartAndEndMarker(startPoint: LatLng, endPoint: LatLng) {
val startMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_big_start_maker_icon)))
startMarker?.position = startPoint
mLineMarkers.add(startMarker)
val endMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_big_end_maker_icon)))
endMarker?.position = endPoint
mLineMarkers.add(endMarker)
// val startMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_big_start_maker_icon)))
// startMarker?.position = startPoint
// mLineMarkers.add(startMarker)
// val endMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_big_end_maker_icon)))
// endMarker?.position = endPoint
// mLineMarkers.add(endMarker)
}
private fun drawEndMarker(endPoint: LatLng){
mEndStationMarker?.remove()
mEndStationMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_big_end_maker_icon)))
mEndStationMarker?.position = endPoint
}
/**
* 清除所有标记和路线
*/
fun clearAllMarkerAndPolyline() {
for (i in mLineMarkers.indices) {
mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove()
}
// for (i in mLineMarkers.indices) {
// mLineMarkers[i]?.isVisible = false
// mLineMarkers[i]?.remove()
// }
mEndStationMarker?.remove()
mWeltPolylines?.remove()
mRoutePolylines?.remove()
mLineMarkers.clear()
// mLineMarkers.clear()
//mFirst = false
//showOrHiddenLegendData(false)
}
@@ -265,6 +273,14 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
}
}
}
/**
* 设置当前大任务的所有子任务起终点集合
*/
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
ThreadUtils.runOnUiThread {
drawEndMarker(coordinatesLatLng)
}
}
/**
* 设置图例数据

View File

@@ -35,7 +35,8 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mAMap: AMap? = null
private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf()
// private val mLineMarkers: MutableList<Marker?> = mutableListOf()
private var endStationMarker:Marker? = null
//清扫车任务地图
private val TAG = "WeltMapView"
@@ -199,17 +200,17 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
* 添加起点和终点的marker
*/
private fun addStartAndEndMarker(startPoint: LatLng, endPoint: LatLng) {
for (i in mLineMarkers.indices) {
mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove()
}
mLineMarkers.clear()
val startMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_start_marker_icon)))
startMarker?.position = startPoint
mLineMarkers.add(startMarker)
val endMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon)))
endMarker?.position = endPoint
mLineMarkers.add(endMarker)
// for (i in mLineMarkers.indices) {
// mLineMarkers[i]?.isVisible = false
// mLineMarkers[i]?.remove()
// }
// mLineMarkers.clear()
// val startMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_start_marker_icon)))
// startMarker?.position = startPoint
// mLineMarkers.add(startMarker)
// val endMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon)))
// endMarker?.position = endPoint
// mLineMarkers.add(endMarker)
}
/**
@@ -217,25 +218,35 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
*/
fun setTaskListCoordinatesLatLng(coordinatesLatLng: MutableList<LatLng>) {
this.mTaskCoordinatesLatLng = coordinatesLatLng
if (mTaskCoordinatesLatLng.size > 0) {
d(
SceneConstant.M_SWEEPER + TAG,
"startPoint${mTaskCoordinatesLatLng[0]} endPoint${mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1]}"
)
addStartAndEndMarker(mTaskCoordinatesLatLng[0], mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1])
}
// if (mTaskCoordinatesLatLng.size > 0) {
// d(
// SceneConstant.M_SWEEPER + TAG,
// "startPoint${mTaskCoordinatesLatLng[0]} endPoint${mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1]}"
// )
// addStartAndEndMarker(mTaskCoordinatesLatLng[0], mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1])
// }
}
/**
* 设置当前大任务的所有子任务起终点集合
*/
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
endStationMarker?.remove()
endStationMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon)))
endStationMarker?.position = coordinatesLatLng
}
/**
* 清除所有标记和路线
*/
fun clearAllMarkerAndPolyline() {
for (i in mLineMarkers.indices) {
mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove()
}
// for (i in mLineMarkers.indices) {
// mLineMarkers[i]?.isVisible = false
// mLineMarkers[i]?.remove()
// }
endStationMarker?.remove()
mWeltPolylines?.remove()
mLineMarkers.clear()
// mLineMarkers.clear()
mRoutePolylines?.remove()
//mFirst = false
//showOrHiddenWelt(false)