From 933d5ed968675ca9768256bde09329f7d126df57 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 5 Jul 2023 18:56:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E8=B7=9D=E8=AE=A1=E7=AE=97=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20=E6=9C=80=E5=A4=A7=E8=B7=9D=E7=A6=BB=E9=99=90?= =?UTF-8?q?=E5=88=B6=E3=80=81=20bus=20=E8=AE=BE=E7=BD=AE=E7=AB=99=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bus/passenger/model/BusPassengerModel.kt | 6 +-- .../TrajectoryAndDistanceManager.kt | 47 ++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt index 8a3c91eb77..9830a0f93b 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt @@ -229,11 +229,11 @@ object BusPassengerModel{ mRouteLineInfoCallback!!.updateStationsInfo(stations, i + 1, false) if (mNextStationIndex != i + 1) { mTwoStationsRouts.clear() - val startStation = mStations[i] - val endStation = mStations[i + 1] - setTrajectoryStation(startStation, endStation, result.lineId) } mNextStationIndex = i + 1 + val startStation = mStations[i] + val endStation = mStations[i + 1] + setTrajectoryStation(startStation, endStation, result.lineId) updateAutopilotControlParameters(result, i) return } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { //到站 diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt index fffccac800..ac917a8802 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt @@ -56,6 +56,8 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ @Volatile private var mRoutePoints: MutableList? = ArrayList() + private var mRoutePointsDistance: MutableList? = ArrayList() + private var maxDistanceAllPoint:Double = 0.0 @Volatile private var lineId:Long? = null @@ -99,9 +101,26 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ private fun updateRoutePoints(routePoints: List?) { mRoutePoints = null + mRoutePointsDistance = null val latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(AbsMogoApplication.getApp(), routePoints!!) mRoutePoints = latLngModels + + mRoutePointsDistance = ArrayList() + maxDistanceAllPoint = 0.0 + mRoutePoints?.forEachIndexed { index, current -> + if (mRoutePoints!!.last()!=current) { + val next = mRoutePoints!![index + 1] + val distanceItem = CoordinateUtils.calculateLineDistance( + current.longitude, + current.latitude, + next.longitude, + next.latitude + ) + mRoutePointsDistance?.add(distanceItem) + maxDistanceAllPoint += distanceItem + } + } } private fun removeTempData() { @@ -262,12 +281,27 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ preCarLocationIndexInTrajectory = 0 return } + + var maxDisatance = 0.0f + if(carLocationInfo.second==true){ + if(carLocationInfo.first>0) { + maxDisatance = mRoutePointsDistance?.get(carLocationInfo.first - 1)?:0f + } + }else{ + maxDisatance = mRoutePointsDistance?.get(carLocationInfo.first)?:0f + } + if(carLocationInfo.third>maxDisatance){ + preCarLocationIndexInTrajectory = 0 + writeLog("到点的距离${carLocationInfo.third},最大距离${maxDisatance}",locationInfo) + return + } + preCarLocationIndexInTrajectory = carLocationInfo.first // 距离回调 try { if(distanceListeners.size>0) { - invokeDistance(carLocationInfo, location) + invokeDistance(carLocationInfo, location,locationInfo) } }catch (e:Exception){ e(M_OCHCOMMON+ TAG,"距离计算错误") @@ -293,7 +327,11 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ } - private fun invokeDistance(carLocationInfo:Triple,location: MogoLocation){ + private fun invokeDistance( + carLocationInfo: Triple, + location: MogoLocation, + locationInfo: String + ){ var lastSumLength = 0f val stationIndex = endStationInfo.index?:0 @@ -321,6 +359,11 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ ) } d(M_OCHCOMMON+ TAG,"距离终点:$lastSumLength") + if(lastSumLength>maxDistanceAllPoint){ + // 大于最大值需要需要删除此次计算 + writeLog("距离终点:$lastSumLength",locationInfo) + return + } if(distanceListeners.size>0) { distanceListeners.forEach { //val tag = it.key