From 0349a4925a7a1a737a9950b74d13a01f763da263 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 9 Mar 2023 16:26:51 +0800 Subject: [PATCH] =?UTF-8?q?[Opt3.0]=E8=A7=A3=E5=86=B3=E4=B8=8B=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E8=AE=A2=E5=8D=95=E5=AF=BC=E8=87=B4=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E7=94=BB=E7=BA=BF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/smp/MarkerDrawerManager.kt | 18 +++++++++--------- .../eagle/core/function/view/OverMapView.kt | 4 ++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt index 1c916ecbf7..1b8eb5302d 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt @@ -22,9 +22,7 @@ object MarkerDrawerManager { fun onLocationChanged(planningPoints: List, locIndex: Int) } - private val routeWipeDisposable by lazy { - CompositeDisposable() - } + private var routeWipeDisposable: CompositeDisposable? = null // 自主画线的所有高德坐标系的轨迹点 val planningPoints by lazy { @@ -40,19 +38,22 @@ object MarkerDrawerManager { var callback: Callback? = null fun startLoopCalCarLocation() { + routeWipeDisposable = CompositeDisposable() getLoopCalCarObservable().delay(1000L, TimeUnit.MILLISECONDS, true) .subscribeOn(Schedulers.io()) .repeat() .retry() .observeOn(AndroidSchedulers.mainThread()) .subscribe().let { - routeWipeDisposable.add(it) + routeWipeDisposable?.add(it) } } fun stopLoopCalCarLocation() { - if (!routeWipeDisposable.isDisposed) { - routeWipeDisposable.dispose() + routeWipeDisposable?.let { + if (!it.isDisposed) { + it.dispose() + } } } @@ -103,7 +104,6 @@ object MarkerDrawerManager { var baseDiffDis = CoordinateUtils.calculateLineDistance( realLon, realLat, baseLatLng.longitude, baseLatLng.latitude ) // lon,lat, prelon, prelat -// val lastIndex = if (lastArrivedIndex >= 1 && lastArrivedIndex <= routePoints.size - 1) lastArrivedIndex else 1 for (i in 1 until routePoints.size) { val latLng = routePoints[i] val diff = CoordinateUtils.calculateLineDistance( @@ -111,8 +111,8 @@ object MarkerDrawerManager { ) if (baseDiffDis > diff) { baseDiffDis = diff - // 距离最近的时候判断是否走过 - if (DrivingDirectionUtils.getDegreeOfCar2Poi2(realLon, realLat, latLng.longitude, latLng.latitude, heading) >= 90) { + // 距离最近的时候判断是否走过,且车行驶是线性连续的1s不会跳点过多 + if (DrivingDirectionUtils.getDegreeOfCar2Poi2(realLon, realLat, latLng.longitude, latLng.latitude, heading) >= 90 && i - lastArrivedIndex < 3) { currentIndex = i } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index dd56a3045b..3cef39a6a1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -36,6 +36,7 @@ import com.mogo.eagle.core.function.smp.MakerWithCount import com.mogo.eagle.core.function.smp.MarkerDrawerManager import com.mogo.eagle.core.function.smp.MarkerDrawerManager.callback import com.mogo.eagle.core.function.smp.MarkerDrawerManager.coordinateConverterWgsToGcj +import com.mogo.eagle.core.function.smp.MarkerDrawerManager.lastArrivedIndex import com.mogo.eagle.core.function.smp.MarkerDrawerManager.lonLatHeading import com.mogo.eagle.core.function.smp.MarkerDrawerManager.planningPoints import com.mogo.eagle.core.function.smp.MarkerDrawerManager.startLoopCalCarLocation @@ -236,6 +237,9 @@ class OverMapView @JvmOverloads constructor( } mStartMarker?.isVisible = false mEndMarker?.isVisible = false + MarkerDrawerManager.stopLoopCalCarLocation() + planningPoints.clear() + lastArrivedIndex = -1 } @SuppressLint("UseCompatLoadingForDrawables")