[dev_arch_opt_3.0]

[Change]
[
1、彻底解决地图跳变问题,原因是因为位置转变GCJ02时候将经纬度设置回去了,从而引起位置异常
]

Signed-off-by: donghongyu <donghongyu@zhidaoauto.com>
This commit is contained in:
donghongyu
2023-02-07 20:57:49 +08:00
parent daf51c78ce
commit d8e2029fa5
32 changed files with 106 additions and 92 deletions

View File

@@ -6,6 +6,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
/**
@@ -13,7 +14,7 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils
* @date 2021/9/30 5:48 下午
* 车辆定位 WGS84 坐标系-高精度坐标系 数据 回调监听
*/
object CallerChassisLocationGCJ20ListenerManager : CallerBase<IMoGoChassisLocationGCJ02Listener>() {
object CallerChassisLocationGCJ02ListenerManager : CallerBase<IMoGoChassisLocationGCJ02Listener>() {
val TAG = "CallerChassisLocationGCJ20ListenerManager"
@@ -46,14 +47,14 @@ object CallerChassisLocationGCJ20ListenerManager : CallerBase<IMoGoChassisLocati
@Synchronized
fun invokeChassisLocationGCJ02(gnssInfo: MogoLocation?, sourceType: DataSourceType) {
gnssInfo?.let {
// 克隆定位数据,防止原数据被篡改导致位置跳变
mGnssInfo = gnssInfo.clone()
// 转换 WGS84-->GCJ02 坐标
val gcj20Location =
CoordinateTransform.WGS84ToGCJ02(gnssInfo.longitude, gnssInfo.latitude)
gnssInfo.longitude = gcj20Location[0]
gnssInfo.latitude = gcj20Location[1]
this.mGnssInfo = gnssInfo
mGnssInfo!!.longitude = gcj20Location[0]
mGnssInfo!!.latitude = gcj20Location[1]
M_LISTENERS.forEach {
val tag = it.key
@@ -99,6 +100,11 @@ object CallerChassisLocationGCJ20ListenerManager : CallerBase<IMoGoChassisLocati
M_LISTENERS_HZ_LAST_SEND_TIME[tag] = TimeUtils.getNowMills()
val listener = it.value
listener.onChassisLocationGCJ02(mogoLocation)
FileUtils.writeToFile(
"/sdcard/Download/",
"location_gcj02.txt",
"${mogoLocation.longitude},${mogoLocation.latitude},${sourceType}\n"
)
}

View File

@@ -4,6 +4,7 @@ import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
/**
@@ -14,10 +15,10 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils
object CallerChassisLocationWGS84ListenerManager : CallerBase<IMoGoChassisLocationWGS84Listener>() {
@Volatile
private var gnssInfo: MogoLocation? = null
private var mGnssInfo: MogoLocation? = null
fun getChassisLocationWGS84(): MogoLocation? {
return gnssInfo
return mGnssInfo
}
/**
@@ -39,7 +40,7 @@ object CallerChassisLocationWGS84ListenerManager : CallerBase<IMoGoChassisLocati
*/
@Synchronized
fun invokeChassisLocationWGS84(gnssInfo: MogoLocation,sourceType: DataSourceType) {
this.gnssInfo = gnssInfo
this.mGnssInfo = gnssInfo.clone()
M_LISTENERS.forEach {
val tag = it.key
// 获取数据监听需要的HZ
@@ -81,6 +82,7 @@ object CallerChassisLocationWGS84ListenerManager : CallerBase<IMoGoChassisLocati
M_LISTENERS_HZ_LAST_SEND_TIME[tag] = TimeUtils.getNowMills()
val listener = it.value
listener.onChassisLocationWGS84(mogoLocation)
FileUtils.writeToFile("/sdcard/Download/", "location_wgs84.txt", "${mogoLocation.longitude},${mogoLocation.latitude},${sourceType}\n")
}

View File

@@ -77,7 +77,7 @@ object CallerVisualAngleManager {
override fun onRoadIdInfo(roadId: String) {
this.roadId.set(roadId)
Log.d(TAG, "-- onRoadIdInfo --: prev: ${this.triggerRoadId.get()} -> curr: $roadId")
val loc = CallerChassisLocationGCJ20ListenerManager.getChassisLocationGCJ02()
val loc = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
var triggerClose = false
val distance = distanceOfCarToStopLine.get() + 5
if (hasCrossRoad && distance > 0) {
@@ -110,7 +110,7 @@ object CallerVisualAngleManager {
hasCrossRoad = true
triggerRoadId.set(this.roadId.get())
distanceOfCarToStopLine.set(info.distanceOfCarToStopLine)
triggerLocation.set(CallerChassisLocationGCJ20ListenerManager.getChassisLocationGCJ02())
triggerLocation.set(CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02())
changeVisualAngle(CrossRoad(true))
}
}