diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperTaskDataToFragmentCallback.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperTaskDataToFragmentCallback.kt index a028dc42ce..2677042385 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperTaskDataToFragmentCallback.kt +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperTaskDataToFragmentCallback.kt @@ -11,4 +11,5 @@ interface ISweeperTaskDataToFragmentCallback { fun clearAllMarkerAndPolyline() fun setProgress(progress:String) fun setTaskListCoordinatesLatLng(coordinatesLatLng: ArrayList) + fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) } \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java index 7dffab403d..c6c6374cbd 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java @@ -92,6 +92,8 @@ public abstract class BaseSweeperTabFragment mWeltDataBeanList;//存储贴边数据 private ArrayList mSubTaskCoordinates;//存储当前大任务的所有子任务起点和终点 + // 当前子任务的终点坐标 + protected LatLng mCurrentTaskEndStation; private ArrayList mRouteList;//存储任务的坐标轨迹 private String mProgress; private ISweeperTaskDataToFragmentCallback mTaskDataToFragmentCallback; @@ -415,8 +417,14 @@ public abstract class BaseSweeperTabFragment + val latLng = bundle.getParcelable("subTaskEndCoordinates") val weltDataList = bundle.getSerializable("weltDataList") as? ArrayList val routeList = bundle.getSerializable("routeList") as? ArrayList 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?, latLngs: ArrayList?, routeList: ArrayList?, @@ -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() } diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java index b0cb70a794..694381dc3d 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java @@ -750,7 +750,8 @@ public class SweeperTaskModel { SweeperServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback>() { @Override public void onSuccess(BaseResponse data) { - CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "subTaskEnd:" + GsonUtil.jsonFromObject(data)); + CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "subTaskEnd:" + + String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd) + GsonUtil.jsonFromObject(data)); if (data != null) { if (data.getData()) { mIsSubTaskWorking = false; @@ -800,7 +801,8 @@ public class SweeperTaskModel { SweeperServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback>() { @Override public void onSuccess(BaseResponse data) { - CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "subTaskSkip:" + GsonUtil.jsonFromObject(data)); + CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "subTaskSkip:" + + String.format("isFirst=%b; isEnd=%b; ", isFirst, isEnd)+ GsonUtil.jsonFromObject(data)); if (mSweeperTaskCallback != null && data != null) { if (data.getData()) { mIsSubTaskWorking = false; diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index 5abceafdce..b94e98bd2c 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -350,7 +350,7 @@ public class SweeperPresenter extends Presenter weltDataBean.setCleanIntensity(roboSweeperTaskIndex.getCleanIntensity()); weltDataBean.setSubTaskId(mSubTaskId); MyDataBase.getInstance().getWeltDataDao().insert(weltDataBean); - String distance = format(roboSweeperTaskIndex.getDistToRefEdgePoint() * 100); + String distance = String.valueOf((Math.round(roboSweeperTaskIndex.getDistToRefEdgePoint() * 100)));//m->cm 四舍五入到整数 mView.setWeltDataToMap((ArrayList) MyDataBase.getInstance().getWeltDataDao().loadAllWeltDataInfo(), true, distance); } } diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltMapOverView.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltMapOverView.kt index 9f68431cb2..22e0e73042 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltMapOverView.kt +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltMapOverView.kt @@ -8,6 +8,7 @@ import android.view.LayoutInflater import android.view.View import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.* @@ -33,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 = mutableListOf() +// private val mLineMarkers: MutableList = mutableListOf() + private var mEndStationMarker: Marker? = null private var mFirst: Boolean = false //清扫车任务地图 @@ -122,17 +124,17 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { } } if (weltDataBean.weltDistance == -9999.0) {//未经过 - colorList.add(Color.parseColor("#3BA1CC")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_3ba1cc)) } else if (weltDataBean.weltDistance == -10000.0) {//非贴边 - colorList.add(Color.parseColor("#236299")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_236299)) } else if (weltDataBean.weltDistance < 0) { - colorList.add(Color.parseColor("#C22101")) - } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 10) { - colorList.add(Color.parseColor("#4DFFA4")) - } else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) { - colorList.add(Color.parseColor("#FFDD4D")) - } else if (weltDataBean.weltDistance >= 20) { - colorList.add(Color.parseColor("#FF912B")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_c22101)) + } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 0.01) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_4dffa4)) + } else if (weltDataBean.weltDistance >= 0.010 && weltDataBean.weltDistance < 0.020) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_ffdd4d)) + } else if (weltDataBean.weltDistance >= 0.020) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_ff912b)) } } return colorList @@ -191,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) } @@ -264,6 +273,14 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { } } } + /** + * 设置当前大任务的所有子任务起终点集合 + */ + fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) { + ThreadUtils.runOnUiThread { + drawEndMarker(coordinatesLatLng) + } + } /** * 设置图例数据 diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltSmallMapView.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltSmallMapView.kt index ff1b71a91c..bf9b0a4309 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltSmallMapView.kt +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/WeltSmallMapView.kt @@ -8,6 +8,7 @@ import android.view.LayoutInflater import android.view.View import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.* @@ -34,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 = mutableListOf() +// private val mLineMarkers: MutableList = mutableListOf() + private var endStationMarker:Marker? = null //清扫车任务地图 private val TAG = "WeltMapView" @@ -145,7 +147,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { mWeltPolylines?.remove() val polylineOptions = PolylineOptions() polylineOptions.addAll(coordinatesLatLngs) - polylineOptions.width(30f) //线段宽度 + polylineOptions.width(14f) //线段宽度 polylineOptions.isUseTexture = false polylineOptions.lineCapType(PolylineOptions.LineCapType.LineCapSquare) polylineOptions.colorValues(colorList) @@ -178,17 +180,17 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { } if (weltDataBean.weltDistance == -9999.0) {//未经过 - colorList.add(Color.parseColor("#3BA1CC")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_3ba1cc)) } else if (weltDataBean.weltDistance == -10000.0) {//非贴边 - colorList.add(Color.parseColor("#236299")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_236299)) } else if (weltDataBean.weltDistance < 0) { - colorList.add(Color.parseColor("#C22101")) - } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 10) { - colorList.add(Color.parseColor("#4DFFA4")) - } else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) { - colorList.add(Color.parseColor("#FFDD4D")) - } else if (weltDataBean.weltDistance >= 20) { - colorList.add(Color.parseColor("#FF912B")) + colorList.add(ContextCompat.getColor(context,R.color.sweeper_c22101)) + } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 0.010) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_4dffa4)) + } else if (weltDataBean.weltDistance >= 0.010 && weltDataBean.weltDistance < 0.020) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_ffdd4d)) + } else if (weltDataBean.weltDistance >= 0.020) { + colorList.add(ContextCompat.getColor(context,R.color.sweeper_ff912b)) } } return colorList @@ -198,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) } /** @@ -216,25 +218,35 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { */ fun setTaskListCoordinatesLatLng(coordinatesLatLng: MutableList) { 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) diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_task_menu.xml b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_task_menu.xml index 6497f4511d..f62a58d93c 100644 --- a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_task_menu.xml +++ b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_task_menu.xml @@ -32,14 +32,15 @@ android:text="跳过" android:textColor="#A6CEFF" android:textSize="@dimen/dp_30" - android:layout_marginTop="@dimen/dp_16"/> + android:padding="@dimen/dp_10" + android:layout_marginTop="@dimen/dp_6"/> + android:padding="@dimen/dp_10" + android:layout_marginTop="@dimen/dp_6"/> + android:padding="@dimen/dp_10" + android:layout_marginTop="@dimen/dp_6"/> diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_welt_map_overview.xml b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_welt_map_overview.xml index 980fd8c76f..16a9957c97 100644 --- a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_welt_map_overview.xml +++ b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_welt_map_overview.xml @@ -10,13 +10,14 @@ android:layout_height="match_parent"/> + android:layout_marginEnd="@dimen/dp_23" + android:layout_marginTop="@dimen/dp_23" + android:padding="@dimen/dp_27"/> + + android:padding="@dimen/dp_30"/> #3769B5 #BF30334C + + #C22101 + + #4DFFA4 + + #FFDD4D + + #FF912B + + #3BA1CC + + #236299 \ No newline at end of file