[charter]
[寻找最近的站点更新]
This commit is contained in:
yangyakun
2023-08-28 19:35:14 +08:00
parent 1629b04287
commit a67661f0c2

View File

@@ -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 -> {}
}
}