[6.5.0][道路事件][视角切换] 逻辑优化2

This commit is contained in:
renwj
2024-07-17 15:09:54 +08:00
parent 58a15194d3
commit 89a16efdd4

View File

@@ -1,5 +1,6 @@
package com.mogo.map
import android.os.Looper
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
@@ -23,6 +24,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import com.zhidaoauto.map.sdk.open.data.CityInfo
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit.SECONDS
import java.util.concurrent.atomic.AtomicReference
/**
@@ -258,20 +260,33 @@ object MapDataWrapper : IMogoData {
lat: Double,
angle: Float
): com.mogo.map.entities.RoadInfo {
if (Looper.getMainLooper() == Looper.myLooper()) {
throw AssertionError()
}
val latch = CountDownLatch(1)
var tempCode: Int = Int.MIN_VALUE
var tempData: RoadNameInfo? = null
Logger.d(TAG, "getRoadInfo --- 1 ---")
MapDataApi.getRoadName(lon, lat, angle, object : IResult<RoadNameInfo> {
override fun result(code: Int, result: RoadNameInfo?) {
Logger.d(TAG, "getRoadInfo ==> code: $code, result: $result")
tempCode = code
tempData = result
latch.countDown()
try {
Logger.d(TAG, "getRoadInfo ==> code: $code, result: $result")
tempCode = code
tempData = result
} finally {
latch.countDown()
}
}
})
latch.await()
Logger.d(TAG, "getRoadInfo --- 2 ---: code -> $tempCode, data -> $tempData")
try {
if (latch.await(5, SECONDS)) {
Logger.d(TAG, "getRoadInfo --- 2 ---: code -> $tempCode, data -> $tempData")
} else {
Logger.d(TAG, "getRoadInfo --- 3 ---: code -> $tempCode, data -> $tempData")
}
} catch (e: InterruptedException) {
e.printStackTrace()
}
return com.mogo.map.entities.RoadInfo(
tempCode,
tempData?.tile_id?.toLong() ?: 0L,
@@ -308,16 +323,33 @@ object MapDataWrapper : IMogoData {
}
override fun getCrossRoad(lon: Double, lat: Double, angle: Double): CrossRoad? {
if (Looper.getMainLooper() == Looper.myLooper()) {
throw AssertionError()
}
val latch = CountDownLatch(1)
Logger.d(TAG, "getCrossRoad --- 1 ---")
val temp = AtomicReference<CrossRoad>()
MapDataApi.getCrossRoad(lon, lat, angle.toFloat(), object : IResult<RoadCross> {
override fun result(code: Int, result: RoadCross?) {
temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: ""))
latch.countDown()
try {
Logger.d(TAG, "getCrossRoad --- 1 - 1 ---")
temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: ""))
} finally {
latch.countDown()
}
}
})
latch.await()
try {
Logger.d(TAG, "getCrossRoad --- 2 ---")
if (latch.await(5, SECONDS)) {
Logger.d(TAG, "getCrossRoad --- 3 ---")
} else {
Logger.d(TAG, "getCrossRoad --- 4 ---")
}
} catch (e: InterruptedException) {
e.printStackTrace()
}
return temp.get()
}
}