[6.5.0][Fix]解决全息路口卡片不显示的问题
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user