From d94ab7b363c08f382620ea2f8d72c5ee914a2deb Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 18 Jul 2024 17:24:00 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][Fix]=E8=A7=A3=E5=86=B3=E5=85=A8?= =?UTF-8?q?=E6=81=AF=E8=B7=AF=E5=8F=A3=E5=8D=A1=E7=89=87=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/view/TravelRealityView.kt | 73 ++++++++++--------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt index ff5ed5ab6d..a04230295e 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt @@ -473,44 +473,50 @@ class TravelRealityView @JvmOverloads constructor( private fun handleRoadEvent(eventList: List) { val globalList = reqData - if (eventList.isEmpty() || globalList.isNullOrEmpty()) return + if (globalList.isNullOrEmpty()) return testTime = System.currentTimeMillis() - val eventDrawMap = HashMap() - val eventOptionsList = ArrayList() - 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() + val eventOptionsList = ArrayList() + 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