[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.utilcode.mogo.logger.CallerLogger
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.och.sweeper.R
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
@@ -30,7 +31,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合
private var mCarMarker: Marker? = null
private var mAMap: AMap? = null
private var mPolylines: MutableList<Polyline?> = mutableListOf()
private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf()
private var mFirst: Boolean = false
@@ -105,18 +106,32 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
*/
private fun getRouteColorList(weltData: MutableList<WeltDataBean>):MutableList<Int> {
val colorList= mutableListOf<Int>()
var nextWeltDataBean:WeltDataBean?=null
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"))
} else if (weltData[i].weltDistance == -10000.0) {//非贴边
} else if (weltDataBean.weltDistance == -10000.0) {//非贴边
colorList.add(Color.parseColor("#236299"))
} else if (weltData[i].weltDistance < 0) {
} else if (weltDataBean.weltDistance < 0) {
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"))
} else if (weltData[i].weltDistance >= 10 && weltData[i].weltDistance < 20) {
} else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) {
colorList.add(Color.parseColor("#FFDD4D"))
} else if (weltData[i].weltDistance >= 20) {
} else if (weltDataBean.weltDistance >= 20) {
colorList.add(Color.parseColor("#FF912B"))
}
}
@@ -158,6 +173,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
}
if (coordinatesLatLngs.size > 2) {
//设置线段纹理
mWeltPolylines?.remove()
val polylineOptions = PolylineOptions()
polylineOptions.addAll(coordinatesLatLngs)
polylineOptions.width(14f) //线段宽度
@@ -166,7 +182,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
polylineOptions.colorValues(colorList)
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]?.remove()
}
for (i in mPolylines.indices) {
mPolylines[i]?.remove()
}
mWeltPolylines?.remove()
mRoutePolylines?.remove()
mLineMarkers.clear()
//mFirst = false

View File

@@ -4,7 +4,6 @@ import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.View
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.utilcode.mogo.logger.CallerLogger.d
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.och.sweeper.R
import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean
@@ -32,7 +32,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
private var mTaskCoordinatesLatLng: MutableList<LatLng> = mutableListOf() //当前大任务的所有起终点集合
private var mCarMarker: Marker? = null
private var mAMap: AMap? = null
private var mPolylines: MutableList<Polyline?> = mutableListOf()
private var mWeltPolylines: Polyline? = null
private var mRoutePolylines: Polyline?=null
private val mLineMarkers: MutableList<Marker?> = mutableListOf()
@@ -142,6 +142,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
}
if (coordinatesLatLngs.size > 2) {
//设置线段纹理
mWeltPolylines?.remove()
val polylineOptions = PolylineOptions()
polylineOptions.addAll(coordinatesLatLngs)
polylineOptions.width(30f) //线段宽度
@@ -150,7 +151,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
polylineOptions.colorValues(colorList)
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> {
val colorList = mutableListOf<Int>()
var nextWeltDataBean:WeltDataBean?=null
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"))
} else if (weltData[i].weltDistance == -10000.0) {//非贴边
} else if (weltDataBean.weltDistance == -10000.0) {//非贴边
colorList.add(Color.parseColor("#236299"))
} else if (weltData[i].weltDistance < 0) {
} else if (weltDataBean.weltDistance < 0) {
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"))
} else if (weltData[i].weltDistance >= 10 && weltData[i].weltDistance < 20) {
} else if (weltDataBean.weltDistance >= 10 && weltDataBean.weltDistance < 20) {
colorList.add(Color.parseColor("#FFDD4D"))
} else if (weltData[i].weltDistance >= 20) {
} else if (weltDataBean.weltDistance >= 20) {
colorList.add(Color.parseColor("#FF912B"))
}
}
@@ -217,9 +233,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
mLineMarkers[i]?.isVisible = false
mLineMarkers[i]?.remove()
}
for (i in mPolylines.indices) {
mPolylines[i]?.remove()
}
mWeltPolylines?.remove()
mLineMarkers.clear()
mRoutePolylines?.remove()
//mFirst = false