[6.5.0][Fix]解决全息路口卡片不显示的问题

This commit is contained in:
chenfufeng
2024-07-18 17:24:00 +08:00
parent 0f24981d59
commit d94ab7b363

View File

@@ -473,44 +473,50 @@ class TravelRealityView @JvmOverloads constructor(
private fun handleRoadEvent(eventList: List<EventBean>) {
val globalList = reqData
if (eventList.isEmpty() || globalList.isNullOrEmpty()) return
if (globalList.isNullOrEmpty()) return
testTime = System.currentTimeMillis()
val eventDrawMap = HashMap<String, EventDrawBean>()
val eventOptionsList = ArrayList<MarkerOptions>()
var distance = 0.0
var key = ""
globalList.forEachIndexed { index, globalPoint ->
if (index >= 0 && index < globalList.size - 1) {
eventList.forEach { eventBean ->
distance = LocationUtils.pointToLine(
globalPoint.lon,
globalPoint.lat,
globalList[index + 1].lon,
globalList[index + 1].lat,
eventBean.lon,
eventBean.lat
)
key = "${eventBean.lon},${eventBean.lat}"
if (distance >= 10 || eventPointMap.contains(key)) {
Log.d(TAG, "道路事件:点(${key})到线段${index}-${index+1}的距离为:${distance}")
return@forEach
if (eventList.isEmpty()) {
listener?.onDraw(emptyList(), true)
// 事件不足3个则用路口设备补齐
completeQuantity()
} else {
val eventDrawMap = HashMap<String, EventDrawBean>()
val eventOptionsList = ArrayList<MarkerOptions>()
var distance = 0.0
var key = ""
globalList.forEachIndexed { index, globalPoint ->
if (index >= 0 && index < globalList.size - 1) {
eventList.forEach { eventBean ->
distance = LocationUtils.pointToLine(
globalPoint.lon,
globalPoint.lat,
globalList[index + 1].lon,
globalList[index + 1].lat,
eventBean.lon,
eventBean.lat
)
key = "${eventBean.lon},${eventBean.lat}"
if (distance >= 10 || eventPointMap.contains(key)) {
Log.d(TAG, "道路事件:点(${key})到线段${index}-${index+1}的距离为:${distance}")
return@forEach
}
eventPointMap[key] = 1
eventBean.orientation = travelNetWorkModel.calculateOrientation(
eventBean.lon, eventBean.lat, globalPoint.lon,
globalPoint.lat, globalList[index + 1].lon, globalList[index + 1].lat,
)
filterEventWithType(eventBean, eventOptionsList, eventDrawMap)
}
eventPointMap[key] = 1
eventBean.orientation = travelNetWorkModel.calculateOrientation(
eventBean.lon, eventBean.lat, globalPoint.lon,
globalPoint.lat, globalList[index + 1].lon, globalList[index + 1].lat,
)
filterEventWithType(eventBean, eventOptionsList, eventDrawMap)
}
}
listener?.onDraw(eventDrawMap.values.toList(), true)
Log.d(TAG, "过滤掉的事件个数为:${eventList.size - eventOptionsList.size}")
// 事件不足3个则用路口设备补齐
completeQuantity()
// 绘制道路事件
drawMarkers(DRAW_ROAD_EVENT, eventOptionsList)
eventPointMap.clear()
}
listener?.onDraw(eventDrawMap.values.toList(), true)
Log.d(TAG, "过滤掉的事件个数为:${eventList.size - eventOptionsList.size}")
// 事件不足3个则用路口设备补齐
completeQuantity()
// 绘制道路事件
drawMarkers(DRAW_ROAD_EVENT, eventOptionsList)
eventPointMap.clear()
}
private fun completeQuantity() {
@@ -632,6 +638,7 @@ class TravelRealityView @JvmOverloads constructor(
* handleCrossDevices -> 计算Marker方向 -> 缓存deviceInPathList
*/
private fun retryGetCrossDevice() {
Log.d(TAG, "retryGetCrossDevice")
val crossDeviceListTmp = deviceInPathList
if (crossDeviceListTmp.isNullOrEmpty()) {
if (retryCount >= 5) return