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