[sweeper]

[绘制靠边数据 距离大于10米的线段设置颜色为透明]
This commit is contained in:
yangyakun
2023-03-10 18:33:58 +08:00
parent 4c862b326b
commit ea897afab4
2 changed files with 51 additions and 23 deletions

View File

@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.sweeper.R import com.mogo.och.sweeper.R
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
@@ -30,7 +31,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合 private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合
private var mCarMarker: Marker? = null private var mCarMarker: Marker? = null
private var mAMap: AMap? = null private var mAMap: AMap? = null
private var mPolylines: MutableList<Polyline?> = mutableListOf() private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf() private val mLineMarkers: MutableList<Marker?> = mutableListOf()
private var mFirst: Boolean = false private var mFirst: Boolean = false
@@ -105,18 +106,32 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
*/ */
private fun getRouteColorList(weltData: MutableList<WeltDataBean>):MutableList<Int> { private fun getRouteColorList(weltData: MutableList<WeltDataBean>):MutableList<Int> {
val colorList= mutableListOf<Int>() val colorList= mutableListOf<Int>()
var nextWeltDataBean:WeltDataBean?=null
for (i in weltData.indices) { for (i in weltData.indices) {
if (weltData[i].weltDistance == -9999.0) {//未经过 val weltDataBean = weltData[i]
if(i+1<weltData.size){
nextWeltDataBean = weltData[i+1]
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
nextWeltDataBean.locLon, nextWeltDataBean.locLat,
weltDataBean.locLon, weltDataBean.locLat
)
// 大于10m
if(calculateLineDistance>10){
colorList.add(Color.TRANSPARENT)
continue
}
}
if (weltDataBean.weltDistance == -9999.0) {//未经过
colorList.add(Color.parseColor("#3BA1CC")) colorList.add(Color.parseColor("#3BA1CC"))
} else if (weltData[i].weltDistance == -10000.0) {//非贴边 } else if (weltDataBean.weltDistance == -10000.0) {//非贴边
colorList.add(Color.parseColor("#236299")) colorList.add(Color.parseColor("#236299"))
} else if (weltData[i].weltDistance < 0) { } else if (weltDataBean.weltDistance < 0) {
colorList.add(Color.parseColor("#C22101")) colorList.add(Color.parseColor("#C22101"))
} else if (weltData[i].weltDistance >= 0 && weltData[i].weltDistance < 10) { } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 10) {
colorList.add(Color.parseColor("#4DFFA4")) colorList.add(Color.parseColor("#4DFFA4"))
} else if (weltData[i].weltDistance >= 10 && weltData[i].weltDistance < 20) { } else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) {
colorList.add(Color.parseColor("#FFDD4D")) colorList.add(Color.parseColor("#FFDD4D"))
} else if (weltData[i].weltDistance >= 20) { } else if (weltDataBean.weltDistance >= 20) {
colorList.add(Color.parseColor("#FF912B")) colorList.add(Color.parseColor("#FF912B"))
} }
} }
@@ -158,6 +173,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
} }
if (coordinatesLatLngs.size > 2) { if (coordinatesLatLngs.size > 2) {
//设置线段纹理 //设置线段纹理
mWeltPolylines?.remove()
val polylineOptions = PolylineOptions() val polylineOptions = PolylineOptions()
polylineOptions.addAll(coordinatesLatLngs) polylineOptions.addAll(coordinatesLatLngs)
polylineOptions.width(14f) //线段宽度 polylineOptions.width(14f) //线段宽度
@@ -166,7 +182,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
polylineOptions.colorValues(colorList) polylineOptions.colorValues(colorList)
polylineOptions.visible(true) polylineOptions.visible(true)
// 绘制线 // 绘制线
mPolylines.add(mAMap?.addPolyline(polylineOptions)) mWeltPolylines = mAMap?.addPolyline(polylineOptions)
} }
} }
} }
@@ -191,9 +207,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
mLineMarkers[i]?.isVisible = false mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove() mLineMarkers[i]?.remove()
} }
for (i in mPolylines.indices) { mWeltPolylines?.remove()
mPolylines[i]?.remove()
}
mRoutePolylines?.remove() mRoutePolylines?.remove()
mLineMarkers.clear() mLineMarkers.clear()
//mFirst = false //mFirst = false

View File

@@ -4,7 +4,6 @@ import android.content.Context
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.util.AttributeSet import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
@@ -17,6 +16,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.sweeper.R import com.mogo.och.sweeper.R
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
@@ -32,7 +32,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合 private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合
private var mCarMarker: Marker? = null private var mCarMarker: Marker? = null
private var mAMap: AMap? = null private var mAMap: AMap? = null
private var mPolylines: MutableList<Polyline?> = mutableListOf() private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf() private val mLineMarkers: MutableList<Marker?> = mutableListOf()
@@ -142,6 +142,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
} }
if (coordinatesLatLngs.size > 2) { if (coordinatesLatLngs.size > 2) {
//设置线段纹理 //设置线段纹理
mWeltPolylines?.remove()
val polylineOptions = PolylineOptions() val polylineOptions = PolylineOptions()
polylineOptions.addAll(coordinatesLatLngs) polylineOptions.addAll(coordinatesLatLngs)
polylineOptions.width(30f) //线段宽度 polylineOptions.width(30f) //线段宽度
@@ -150,7 +151,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
polylineOptions.colorValues(colorList) polylineOptions.colorValues(colorList)
polylineOptions.visible(true) polylineOptions.visible(true)
// 绘制线 // 绘制线
mPolylines.add(mAMap?.addPolyline(polylineOptions)) mWeltPolylines = mAMap?.addPolyline(polylineOptions)
} }
} }
} }
@@ -160,18 +161,33 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
*/ */
private fun getRouteColorList(weltData: MutableList<WeltDataBean>): MutableList<Int> { private fun getRouteColorList(weltData: MutableList<WeltDataBean>): MutableList<Int> {
val colorList = mutableListOf<Int>() val colorList = mutableListOf<Int>()
var nextWeltDataBean:WeltDataBean?=null
for (i in weltData.indices) { for (i in weltData.indices) {
if (weltData[i].weltDistance == -9999.0) {//未经过 val weltDataBean = weltData[i]
if(i+1<weltData.size){
nextWeltDataBean = weltData[i+1]
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
nextWeltDataBean.locLon, nextWeltDataBean.locLat,
weltDataBean.locLon, weltDataBean.locLat
)
// 大于10m
if(calculateLineDistance>10){
colorList.add(Color.TRANSPARENT)
continue
}
}
if (weltDataBean.weltDistance == -9999.0) {//未经过
colorList.add(Color.parseColor("#3BA1CC")) colorList.add(Color.parseColor("#3BA1CC"))
} else if (weltData[i].weltDistance == -10000.0) {//非贴边 } else if (weltDataBean.weltDistance == -10000.0) {//非贴边
colorList.add(Color.parseColor("#236299")) colorList.add(Color.parseColor("#236299"))
} else if (weltData[i].weltDistance < 0) { } else if (weltDataBean.weltDistance < 0) {
colorList.add(Color.parseColor("#C22101")) colorList.add(Color.parseColor("#C22101"))
} else if (weltData[i].weltDistance >= 0 && weltData[i].weltDistance < 10) { } else if (weltDataBean.weltDistance >= 0 && weltDataBean.weltDistance < 10) {
colorList.add(Color.parseColor("#4DFFA4")) colorList.add(Color.parseColor("#4DFFA4"))
} else if (weltData[i].weltDistance >= 10 && weltData[i].weltDistance < 20) { } else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) {
colorList.add(Color.parseColor("#FFDD4D")) colorList.add(Color.parseColor("#FFDD4D"))
} else if (weltData[i].weltDistance >= 20) { } else if (weltDataBean.weltDistance >= 20) {
colorList.add(Color.parseColor("#FF912B")) colorList.add(Color.parseColor("#FF912B"))
} }
} }
@@ -217,9 +233,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
mLineMarkers[i]?.isVisible = false mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove() mLineMarkers[i]?.remove()
} }
for (i in mPolylines.indices) { mWeltPolylines?.remove()
mPolylines[i]?.remove()
}
mLineMarkers.clear() mLineMarkers.clear()
mRoutePolylines?.remove() mRoutePolylines?.remove()
//mFirst = false //mFirst = false