[5.0.0]
[charter] [寻找最近的站点更新]
This commit is contained in:
@@ -52,10 +52,10 @@ import io.reactivex.Observable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.max
|
||||
|
||||
/**
|
||||
* Created on 2022/3/31
|
||||
@@ -798,49 +798,64 @@ object CharterPassengerModel {
|
||||
}
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
|
||||
// 仅计算 距离最近的站点middle 附近5个坐标的夹角
|
||||
|
||||
// middle middle-1
|
||||
var middleDegree1 = 0
|
||||
|
||||
// middle middle+1
|
||||
var middleDegree2 = 0
|
||||
|
||||
// middle-1 middle-2
|
||||
var middleDegree3 = 0
|
||||
|
||||
// middle+1 middle+2
|
||||
var middleDegree4 = 0
|
||||
|
||||
if (middle - 1 >= 0) {
|
||||
val degree = CoordinateCalculateRouteUtil.getDegree(
|
||||
middleDegree1 = CoordinateCalculateRouteUtil.getDegree(
|
||||
it.longitude, it.latitude,
|
||||
data.get(middle).GcjLon!!, data.get(middle).GcjLat!!,
|
||||
data.get(middle - 1).GcjLon!!, data.get(middle - 1).GcjLat!!,
|
||||
)
|
||||
if (degree > 90) {
|
||||
return Pair(middle, false)
|
||||
}
|
||||
}
|
||||
if (middle + 1 < data.size) {
|
||||
val degree = CoordinateCalculateRouteUtil.getDegree(
|
||||
middleDegree2 = CoordinateCalculateRouteUtil.getDegree(
|
||||
it.longitude, it.latitude,
|
||||
data.get(middle + 1).GcjLon!!, data.get(middle + 1).GcjLat!!,
|
||||
data.get(middle).GcjLon!!, data.get(middle).GcjLat!!,
|
||||
)
|
||||
if (degree > 90) {
|
||||
return Pair(middle + 1, false)
|
||||
}
|
||||
}
|
||||
if (middle - 2 >= 0) {
|
||||
val degree = CoordinateCalculateRouteUtil.getDegree(
|
||||
middleDegree3 = CoordinateCalculateRouteUtil.getDegree(
|
||||
it.longitude, it.latitude,
|
||||
data.get(middle - 1).GcjLon!!, data.get(middle - 1).GcjLat!!,
|
||||
data.get(middle - 2).GcjLon!!, data.get(middle - 2).GcjLat!!,
|
||||
)
|
||||
if (degree > 90) {
|
||||
return Pair(middle - 1, false)
|
||||
}
|
||||
}
|
||||
if (middle + 2 < data.size) {
|
||||
val degree = CoordinateCalculateRouteUtil.getDegree(
|
||||
middleDegree4 = CoordinateCalculateRouteUtil.getDegree(
|
||||
it.longitude, it.latitude,
|
||||
data.get(middle + 2).GcjLon!!, data.get(middle + 2).GcjLat!!,
|
||||
data.get(middle + 1).GcjLon!!, data.get(middle + 1).GcjLat!!,
|
||||
)
|
||||
if (degree > 90) {
|
||||
}
|
||||
val max1 = max(middleDegree1, middleDegree2)
|
||||
val max2 = max(middleDegree3, middleDegree4)
|
||||
d(M_BUS_P + TAG, "角度1:$middleDegree1---角度2:$middleDegree2--角度3:$middleDegree3----角度4:$middleDegree4")
|
||||
when (max(max1, max2)) {
|
||||
middleDegree1 -> {
|
||||
return Pair(middle, false)
|
||||
}
|
||||
middleDegree2 -> {
|
||||
return Pair(middle + 1, false)
|
||||
}
|
||||
middleDegree3 -> {
|
||||
return Pair(middle - 1, false)
|
||||
}
|
||||
middleDegree4 -> {
|
||||
return Pair(middle + 2, false)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user