Merge remote-tracking branch 'origin/dev_robotaxi-d_240705_6.5.0' into dev_robotaxi-d_240705_6.5.0
This commit is contained in:
@@ -149,6 +149,30 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:explorationUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:promptUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_800"
|
||||
@@ -197,6 +221,17 @@
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<!--融合红绿灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="driver"
|
||||
/>
|
||||
|
||||
<!--接管提示-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TakeOverView
|
||||
@@ -373,6 +408,16 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_32"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.mogo.och.common.module.wigets.LoadingMapStatusView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
@@ -84,6 +84,18 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:traffic_light_user="traffic_light_taxi_p" />
|
||||
|
||||
<!--融合红绿灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="passenger"
|
||||
/>
|
||||
|
||||
<!--转向灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TurnLightViewStatus
|
||||
android:layout_width="wrap_content"
|
||||
@@ -189,6 +201,29 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:visibility="gone"
|
||||
app:promptUser="passenger"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_650"
|
||||
@@ -198,6 +233,15 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
app:layout_constraintBottom_toTopOf="@+id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<!--气泡态消息盒子-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView
|
||||
android:id="@+id/pmbb_info"
|
||||
|
||||
@@ -187,6 +187,42 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--融合红绿灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="driver"
|
||||
/>
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:explorationUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:promptUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--接管提示-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TakeOverView
|
||||
android:layout_width="@dimen/hmi_take_over_request_width"
|
||||
|
||||
@@ -84,6 +84,43 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:traffic_light_user="traffic_light_taxi_p" />
|
||||
|
||||
<!--融合红绿灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="passenger"
|
||||
/>
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:explorationUser="passenger"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:visibility="gone"
|
||||
app:promptUser="passenger"
|
||||
/>
|
||||
|
||||
|
||||
<!--转向灯-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TurnLightViewStatus
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.enums.CommunicationType
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP
|
||||
import com.mogo.eagle.core.data.map.entity.MarkerExploreWay
|
||||
import com.mogo.eagle.core.data.map.entity.MarkerLocation
|
||||
@@ -31,6 +32,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager.V2NC
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerRoadV2NEventWindowListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
@@ -42,6 +44,8 @@ import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.function.biz.v2x.V2XBizTrace
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.consts.V2XConst
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.remove.MarkerWrapper
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker.Marker
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.utils.EventDismissBean
|
||||
@@ -51,6 +55,8 @@ import com.mogo.eagle.function.biz.v2x.v2n.utils.V2NUtils
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.utils.V2XEventAnalyticsManager
|
||||
import com.mogo.map.MapDataWrapper
|
||||
import com.mogo.map.entities.Lane
|
||||
import com.mogo.map.overlay.core.Level.MAP_MARKER
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.telematics.pad.MessagePad.Header
|
||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||
@@ -58,6 +64,7 @@ import mogo.telematics.pad.MessagePad.V2nCrossSpeed
|
||||
import mogo.v2x.MogoV2X
|
||||
import mogo.v2x.MogoV2X.RSI_PB
|
||||
import mogo.v2x.MogoV2X.RTEData_PB
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit.SECONDS
|
||||
import kotlin.math.abs
|
||||
|
||||
@@ -73,6 +80,13 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
private const val MSG_WHAT_DRAW_YONGDU = 0x1012 // 交通拥堵
|
||||
private const val MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE = 0x1013 // 他车倒车/逆行
|
||||
private const val MSG_WHAT_DRAW_GREEN_WAVE = 0x1014 // 绿波通行
|
||||
private const val MSG_WHAT_DRAW_PEOPLE_CROSS = 0x1015 // 行人横穿
|
||||
|
||||
private val builder_people_cross by lazy {
|
||||
Point.Options.Builder(V2XConst.V2X_MARKER_OWNER, MAP_MARKER).isUseGps(true).anchorColor("#D65D5AFF").set3DMode(true).icon3DRes(TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE.traffic3DIconId)
|
||||
}
|
||||
|
||||
private val markers by lazy { ConcurrentHashMap<String, MarkerWrapper>() }
|
||||
|
||||
private val callback = Handler.Callback { msg ->
|
||||
if (msg.what == MSG_WHAT_DRAW_SHIGONE || msg.what == MSG_WHAT_DRAW_SHIGU) {
|
||||
@@ -313,45 +327,49 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "event == null"), true)
|
||||
return@Callback true
|
||||
}
|
||||
val eventLocation = when (event.gnssType) {
|
||||
0 -> CoordinateTransform.GCJ02ToWGS84(event.longitude, event.latitude)
|
||||
else -> arrayOf(event.longitude, event.latitude)
|
||||
}
|
||||
val carLocation = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, eventLocation[0], eventLocation[1])
|
||||
if (distance > 150) {
|
||||
Logger.i(TAG, "other_retrograde_vehicle --> distance > 150")
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
val newEventId = "other_retrograde_vehicle_${event.eventId}_${event.timestamp}_${event.longitude}_${event.latitude}"
|
||||
val cameraIp = if(TextUtils.isEmpty(event.exts)) ""
|
||||
else (GsonUtils.fromJson(event.exts, Map::class.java)["cameraIp"])?:""
|
||||
// 弹事件框
|
||||
CallerRoadV2NEventWindowListenerManager.showLiveVideo(
|
||||
newEventId,
|
||||
event.timestamp,
|
||||
EventTypeEnumNew.getUpdateIconRes(EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType),
|
||||
String.format(EventTypeEnumNew.getAlarmContent(EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType), distance.toInt()),
|
||||
isDriver,
|
||||
cameraIp.toString(),
|
||||
event.longitude,
|
||||
event.latitude)
|
||||
// 高精地图绘制-添加
|
||||
//TODO
|
||||
EventDismissManager.addEvent(
|
||||
TAG,
|
||||
EventDismissBean(
|
||||
AiRoadMarker.aiMakers.getOrPut(event.eventId) {
|
||||
AiRoadMarker()
|
||||
}.apply {
|
||||
val eventLocation = when (event.gnssType) {
|
||||
0 -> CoordinateTransform.GCJ02ToWGS84(event.longitude, event.latitude)
|
||||
else -> arrayOf(event.longitude, event.latitude)
|
||||
}
|
||||
val carLocation = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, eventLocation[0], eventLocation[1])
|
||||
if (distance > 150) {
|
||||
Logger.i(TAG, "other_retrograde_vehicle --> distance > 150")
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
val newEventId = "other_retrograde_vehicle_${event.eventId}_${event.timestamp}_${event.longitude}_${event.latitude}"
|
||||
val cameraIp = if(TextUtils.isEmpty(event.exts)) ""
|
||||
else (GsonUtils.fromJson(event.exts, Map::class.java)["cameraIp"])?:""
|
||||
// 弹事件框
|
||||
CallerRoadV2NEventWindowListenerManager.showLiveVideo(
|
||||
newEventId,
|
||||
event.timestamp,
|
||||
EventTypeEnumNew.getUpdateIconRes(EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType),
|
||||
String.format(EventTypeEnumNew.getAlarmContent(EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType), distance.toInt()),
|
||||
isDriver,
|
||||
cameraIp.toString(),
|
||||
event.longitude,
|
||||
event.latitude,
|
||||
150,
|
||||
20,
|
||||
-1,
|
||||
event.targetIdsList.joinToString(separator = ",")
|
||||
)
|
||||
)
|
||||
event.latitude)
|
||||
}.also {
|
||||
it.marker(Marker(event.eventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType, event.longitude, event.latitude, 0.0), drawMarker = true, false, isHighFrequency = true)
|
||||
}
|
||||
// EventDismissManager.addEvent(
|
||||
// TAG,
|
||||
// EventDismissBean(
|
||||
// newEventId,
|
||||
// event.longitude,
|
||||
// event.latitude,
|
||||
// 150,
|
||||
// 20,
|
||||
// -1,
|
||||
// event.targetIdsList.joinToString(separator = ",")
|
||||
// )
|
||||
// )
|
||||
} else if (msg.what == MSG_WHAT_DRAW_GREEN_WAVE) {
|
||||
val data = msg.obj as? V2nCrossSpeed ?: return@Callback true
|
||||
val destX = data.lng
|
||||
@@ -385,6 +403,35 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (msg.what == MSG_WHAT_DRAW_PEOPLE_CROSS) {
|
||||
val data = msg.obj as? MessagePad.Event ?: return@Callback true
|
||||
AiRoadMarker.aiMakers.getOrPut(data.eventId) {
|
||||
AiRoadMarker()
|
||||
}.apply {
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
val carLocation = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, data.longitude, data.latitude)
|
||||
if (distance > 150) {
|
||||
Logger.i(TAG, "people cross --> distance > 150")
|
||||
V2XBizTrace.onAck(TAG, mapOf("people cross" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
val cameraIp = if(TextUtils.isEmpty(data.exts)) ""
|
||||
else (GsonUtils.fromJson(data.exts, Map::class.java)["cameraIp"])?:""
|
||||
// 弹事件框
|
||||
CallerRoadV2NEventWindowListenerManager.showLiveVideo(
|
||||
data.eventId,
|
||||
data.timestamp,
|
||||
EventTypeEnumNew.getUpdateIconRes(EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType),
|
||||
String.format(EventTypeEnumNew.getAlarmContent(EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType), distance.toInt()),
|
||||
isDriver,
|
||||
cameraIp.toString(),
|
||||
data.longitude,
|
||||
data.latitude)
|
||||
|
||||
}.also {
|
||||
it.marker(Marker(data.eventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType, data.longitude, data.latitude, 0.0), drawMarker = true, false, isHighFrequency = true)
|
||||
}.receive()
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -558,11 +605,10 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
|
||||
private fun drawOtherRetrogradeVehicle(event: MessagePad.Event) {
|
||||
Logger.i("V2NIdentifyDrawer", "---drawOtherRetrogradeVehicle --- :${event.toString()}, [${FunctionBuildConfig.v2nMainSwitch}, ${FunctionBuildConfig.isNewV2NData}]")
|
||||
// if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) {
|
||||
//
|
||||
// }
|
||||
handler.removeMessages(MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE)
|
||||
handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE, event))
|
||||
if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) {
|
||||
handler.removeMessages(MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE)
|
||||
handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE, event))
|
||||
}
|
||||
}
|
||||
|
||||
private fun drawGreenWave(crossSpeed: V2nCrossSpeed) {
|
||||
@@ -573,6 +619,14 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
}
|
||||
}
|
||||
|
||||
private fun drawPeopleCross(event: MessagePad.Event) {
|
||||
Log.d("V2NIdentifyDrawer", "---drawPeopleCross---: $event, [${FunctionBuildConfig.v2nMainSwitch}, ${FunctionBuildConfig.isNewV2NData}]")
|
||||
if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) {
|
||||
handler.removeMessages(MSG_WHAT_DRAW_PEOPLE_CROSS)
|
||||
handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_PEOPLE_CROSS, event))
|
||||
}
|
||||
}
|
||||
|
||||
private val nioEventListener = object : IMoGoV2nNioEventListener {
|
||||
override fun onV2nNioCongestionEvent(congestion: MessagePad.V2nCongestion) {
|
||||
super.onV2nNioCongestionEvent(congestion)
|
||||
@@ -582,7 +636,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
override fun onV2nNioCrossoverEvent(event: MessagePad.Event) {
|
||||
super.onV2nNioCrossoverEvent(event)
|
||||
V2XBizTrace.onAck(event,"onV2nNioCrossoverEvent", true)
|
||||
//TODO renwj
|
||||
drawPeopleCross(event)
|
||||
}
|
||||
|
||||
override fun onV2nNioGreenWavePassageEvent(crossSpeed: V2nCrossSpeed) {
|
||||
@@ -613,19 +667,17 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
|
||||
override fun onEventDismissByDistance(event: EventDismissBean) {
|
||||
Logger.i(TAG, "onEventDismissByDistance --> ${event.toString()}")
|
||||
if (event.eventId.startsWith("other_retrograde_vehicle")) {
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "onEventDismissByDistance"), true)
|
||||
val targetIds = event.exts.split(",")
|
||||
//TODO 高精地图绘制 移除
|
||||
}
|
||||
// if (event.eventId.startsWith("other_retrograde_vehicle")) {
|
||||
// V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "onEventDismissByDistance"), true)
|
||||
// val targetIds = event.exts.split(",")
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onEventDismissByExpired(event: EventDismissBean) {
|
||||
Logger.i(TAG, "onEventDismissByExpired --> ${event.toString()}")
|
||||
if (event.eventId.startsWith("other_retrograde_vehicle")) {
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "onEventDismissByExpired"), true)
|
||||
val targetIds = event.exts.split(",")
|
||||
//TODO 高精地图绘制 移除
|
||||
}
|
||||
// if (event.eventId.startsWith("other_retrograde_vehicle")) {
|
||||
// V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "onEventDismissByExpired"), true)
|
||||
// val targetIds = event.exts.split(",")
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
|
||||
data class MarkerWrapper(val id: String, val lon: Double, val lat: Double, val coordinateType: Int, var markers: ArrayList<Point>? = null, var lines: ArrayList<Polyline>? = null, var elapsedDistance: Int = 500, var elapsedDuration: Long = -1, var onRemoved:((id: String) -> Unit)? = null) {
|
||||
data class MarkerWrapper(val id: String, var lon: Double, var lat: Double, val coordinateType: Int, var markers: ArrayList<Point>? = null, var lines: ArrayList<Polyline>? = null, var elapsedDistance: Int = 500, var elapsedDuration: Long = -1, var onRemoved:((id: String) -> Unit)? = null) {
|
||||
|
||||
fun addLine(line: Polyline) {
|
||||
var ll = this.lines
|
||||
@@ -215,4 +215,8 @@ object MarkerRemoveManager {
|
||||
handler.postDelayed(checkTask, 1000)
|
||||
}
|
||||
}
|
||||
|
||||
fun peekMarker(id: String): MarkerWrapper? {
|
||||
return showedMarkers.find { it.id == id }
|
||||
}
|
||||
}
|
||||
@@ -21,11 +21,15 @@ import com.mogo.eagle.function.biz.v2x.v2n.remove.MarkerRemoveManager
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.remove.MarkerWrapper
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.road.V2XAiRoadEventMarker
|
||||
import com.mogo.map.MogoData.Companion.mogoMapData
|
||||
import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.core.Level.MAP_MARKER
|
||||
import com.mogo.map.overlay.core.Level.ROAD_CENTER_LINE
|
||||
import com.mogo.map.overlay.line.Polyline
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.zhidaoauto.map.data.road.CenterLine
|
||||
import java.util.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.CopyOnWriteArraySet
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
@@ -42,10 +46,19 @@ class AiRoadMarker {
|
||||
private const val TAG = "AiRoadMarker"
|
||||
private val COLOR_START = Color.parseColor("#002ABAD9")
|
||||
private val COLOR_END = Color.parseColor("#66FF7A30")
|
||||
private val builders by lazy { ConcurrentHashMap<String, Point.Options.Builder>() }
|
||||
|
||||
private val markerIds by lazy { CopyOnWriteArraySet<String>() }
|
||||
|
||||
internal fun getOrPutPointOptionBuilder(id: String, owner: String, level: Level): Point.Options.Builder {
|
||||
return builders.getOrPut(id) { Point.Options.Builder(owner, level) }
|
||||
}
|
||||
}
|
||||
|
||||
private val marker by lazy { AtomicReference<Marker>() }
|
||||
|
||||
|
||||
|
||||
private val overlayManager by lazy {
|
||||
CallerMapUIServiceManager.getOverlayManager()
|
||||
}
|
||||
@@ -84,68 +97,98 @@ class AiRoadMarker {
|
||||
.setWidth(50f).setUseGps(true)
|
||||
}
|
||||
|
||||
fun marker(marker: Marker, drawMarker: Boolean, drawRoadLine: Boolean = false) {
|
||||
v2nDrawHandler.post {
|
||||
val location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
this.marker.set(marker)
|
||||
var elapsedDistance = 500
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
elapsedDistance = 10
|
||||
}
|
||||
var elapsedDuration = -1L
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
elapsedDuration = TimeUnit.SECONDS.toMillis(3)
|
||||
}
|
||||
val wrapper = MarkerWrapper(marker.id, marker.poi_lon, marker.poi_lat, 1, elapsedDistance = elapsedDistance, elapsedDuration = elapsedDuration)
|
||||
if (drawMarker) {
|
||||
marker.entity?.apply { roadMarker.drawMarkers(this, wrapper) }
|
||||
}
|
||||
if (drawRoadLine) {
|
||||
//施工中心点前方的自车行驶方向上300米距离
|
||||
var l1: CenterLine? = null
|
||||
var l2: CenterLine? = null
|
||||
mogoMapData.get()?.getCenterLineRangeInfo(
|
||||
marker.poi_lon,
|
||||
marker.poi_lat,
|
||||
location.heading.toFloat(),
|
||||
300f, call = { result ->
|
||||
//施工中心点后方的自车行驶方向上300米距离
|
||||
result?.let {
|
||||
V2XBizTrace.onAck("$TAG -marker-3-l1:", it)
|
||||
l1 = result
|
||||
}
|
||||
countDown.incrementAndGet()
|
||||
realMark(marker, wrapper, l1, l2, location.heading)
|
||||
})
|
||||
mogoMapData.get()?.getCenterLineRangeInfo(
|
||||
marker.poi_lon,
|
||||
marker.poi_lat,
|
||||
location.heading.toFloat(),
|
||||
-200f, call = { result ->
|
||||
result?.let {
|
||||
V2XBizTrace.onAck("$TAG -marker-3-l2:", it)
|
||||
l2 = result
|
||||
}
|
||||
countDown.incrementAndGet()
|
||||
realMark(marker, wrapper, l1, l2, location.heading)
|
||||
})
|
||||
fun marker(marker: Marker, drawMarker: Boolean, drawRoadLine: Boolean = false, isHighFrequency:Boolean = false) {
|
||||
val markerId = marker.id
|
||||
if (isHighFrequency && drawMarker) {
|
||||
val builder = getOrPutPointOptionBuilder(markerId, V2XConst.V2X_MARKER_OWNER, MAP_MARKER)
|
||||
builder
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.icon3DRes(EventTypeEnumNew.getMarker3DRes(marker.poiType))
|
||||
.anchorColor("#D65D5AFF")
|
||||
.longitude(marker.poi_lon)
|
||||
.latitude(marker.poi_lat)
|
||||
CallerMapUIServiceManager.getOverlayManager()?.showOrUpdatePoint(builder.build())?.let { p ->
|
||||
if (!markerIds.contains(markerId)) {
|
||||
markerIds.add(markerId)
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, 1, elapsedDistance = 10)
|
||||
wrapper.onRemoved = {
|
||||
builders.remove(markerId)
|
||||
markerIds.remove(p.id)
|
||||
}
|
||||
wrapper.addPoint(p)
|
||||
MarkerRemoveManager.addMarker(wrapper)
|
||||
} else {
|
||||
MarkerRemoveManager.peekMarker(markerId)?.also {
|
||||
it.lon = marker.poi_lon
|
||||
it.lat = marker.poi_lat
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
v2nDrawHandler.post {
|
||||
val location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
this.marker.set(marker)
|
||||
var elapsedDistance = 500
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
elapsedDistance = 10
|
||||
}
|
||||
var elapsedDuration = -1L
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
elapsedDuration = TimeUnit.SECONDS.toMillis(3)
|
||||
}
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, 1, elapsedDistance = elapsedDistance, elapsedDuration = elapsedDuration)
|
||||
if (drawMarker) {
|
||||
marker.entity?.apply { roadMarker.drawMarkers(this, wrapper) }
|
||||
}
|
||||
if (drawRoadLine) {
|
||||
//施工中心点前方的自车行驶方向上300米距离
|
||||
var l1: CenterLine? = null
|
||||
var l2: CenterLine? = null
|
||||
mogoMapData.get()?.getCenterLineRangeInfo(
|
||||
marker.poi_lon,
|
||||
marker.poi_lat,
|
||||
location.heading.toFloat(),
|
||||
300f, call = { result ->
|
||||
//施工中心点后方的自车行驶方向上300米距离
|
||||
result?.let {
|
||||
V2XBizTrace.onAck("$TAG -marker-3-l1:", it)
|
||||
l1 = result
|
||||
}
|
||||
countDown.incrementAndGet()
|
||||
realMark(marker, wrapper, l1, l2, location.heading)
|
||||
})
|
||||
mogoMapData.get()?.getCenterLineRangeInfo(
|
||||
marker.poi_lon,
|
||||
marker.poi_lat,
|
||||
location.heading.toFloat(),
|
||||
-200f, call = { result ->
|
||||
result?.let {
|
||||
V2XBizTrace.onAck("$TAG -marker-3-l2:", it)
|
||||
l2 = result
|
||||
}
|
||||
countDown.incrementAndGet()
|
||||
realMark(marker, wrapper, l1, l2, location.heading)
|
||||
})
|
||||
}
|
||||
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
val builder = Polyline.Options.Builder(V2XConst.V2X_MARKER_OWNER, ROAD_CENTER_LINE)
|
||||
builder.colors(listOf(Color.parseColor("#996DFED0"), Color.parseColor("#CC6DFED0"), Color.parseColor("#C76DFED0"), Color.parseColor("#006DFED0")))
|
||||
.setWidth(5f)
|
||||
.setUseGps(true)
|
||||
.points(listOf(MogoLatLng(location.latitude, location.longitude), MogoLatLng(marker.poi_lat, marker.poi_lon)))
|
||||
.setIsGradient(true)
|
||||
.isShowArrow(true)
|
||||
CallerMapUIServiceManager.getOverlayManager()?.showOrUpdateLine(builder.build())?.also { wrapper.addLine(it) }
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
val builder = Polyline.Options.Builder(V2XConst.V2X_MARKER_OWNER, ROAD_CENTER_LINE)
|
||||
builder.colors(listOf(Color.parseColor("#996DFED0"), Color.parseColor("#CC6DFED0"), Color.parseColor("#C76DFED0"), Color.parseColor("#006DFED0")))
|
||||
.setWidth(50f)
|
||||
.setUseGps(true)
|
||||
.points(listOf(MogoLatLng(location.latitude, location.longitude), MogoLatLng(marker.poi_lat, marker.poi_lon)))
|
||||
.setIsGradient(true)
|
||||
.isShowArrow(true)
|
||||
CallerMapUIServiceManager.getOverlayManager()?.showOrUpdateLine(builder.build())?.also { wrapper.addLine(it) }
|
||||
}
|
||||
wrapper.onRemoved = { id ->
|
||||
aiMakers.remove(id)
|
||||
}
|
||||
MarkerRemoveManager.addMarker(wrapper)
|
||||
}
|
||||
wrapper.onRemoved = { id ->
|
||||
aiMakers.remove(id)
|
||||
}
|
||||
MarkerRemoveManager.addMarker(wrapper)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
||||
@@ -49,7 +49,7 @@ public class V2XRoadEventMarker implements IV2XMarker<V2XRoadEventEntity> {
|
||||
MarkerLocation location = noveltyInfo.getLocation();
|
||||
AiRoadMarker.Marker m = new AiRoadMarker.Marker(noveltyInfo.getInfoId(), noveltyInfo.getPoiType(), gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity);
|
||||
AiRoadMarker aiMarker = new AiRoadMarker();
|
||||
aiMarker.marker(m, true, isDrawRoadLine(m.getPoiType()));
|
||||
aiMarker.marker(m, true, isDrawRoadLine(m.getPoiType()), false);
|
||||
AiRoadMarker.aiMakers.put(noveltyInfo.getInfoId(), aiMarker);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.Context
|
||||
import android.os.CountDownTimer
|
||||
import android.os.Handler
|
||||
import android.util.Log
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightStatus
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight
|
||||
@@ -172,6 +173,26 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
||||
onTrafficLightPrompt(convert(light.state),light.duration,convert(light.nextState),light.nextDuration,
|
||||
convert(light.nextTwoState),light.nextTwoDuration)
|
||||
}
|
||||
/**
|
||||
* 司机端提示:
|
||||
* 车辆等红灯,在红/黄灯剩余5s且下一灯态为绿灯时,提示“红灯即将变绿”;并在变为绿灯时有提示起步的动效
|
||||
* 车辆行驶中,若判断当前绿灯自车无法通过,在绿灯剩余5s且下一灯态为红/黄灯时,提示“蘑菇提醒您及时减速,避免路口急刹”
|
||||
* 车辆行驶中,若判断当前绿灯自车基于当前速度需提速10%以上才可通过时,提示“蘑菇提醒您及时减速,避免路口急刹”
|
||||
* 车辆行驶中,若判断当前红灯自车基于当前速度需降低60%以上才可通过时,提示“蘑菇提醒您及时减速,避免路口急刹”
|
||||
*/
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
|
||||
if((light.state == FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION || light.state ==FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION)
|
||||
&& light.duration < 5 && light.nextState == FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION){
|
||||
//语音播放
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("红灯即将变绿")
|
||||
}
|
||||
//TODO 需要知道当前车速和当前位置距离路口的距离
|
||||
// if(light.state == FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION && light.duration < 5){
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -280,7 +301,6 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
||||
if (filterTelematicUnion(sourceType)) {
|
||||
return
|
||||
}
|
||||
Log.i("xuxinchao","hide msg="+msg+" sourceType="+sourceType)
|
||||
CallerTrafficLightListenerManager.disableTrafficLight()
|
||||
}
|
||||
|
||||
|
||||
@@ -419,7 +419,17 @@ class MoGoHmiProvider : IMoGoHmiProvider {
|
||||
.width(WindowManager.LayoutParams.WRAP_CONTENT)
|
||||
.height(WindowManager.LayoutParams.WRAP_CONTENT)
|
||||
.attachToActivity(activity)
|
||||
.draggable(true)
|
||||
.gravityInActivity(Gravity.CENTER)
|
||||
.also {
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
it.offsetX(960)
|
||||
it.offsetY(445)
|
||||
} else {
|
||||
it.offsetX(980)
|
||||
it.offsetY(-324)
|
||||
}
|
||||
}
|
||||
.onDismissed {
|
||||
greenWave.set(null)
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
|
||||
MsgCategory.RECORD_BAG -> {
|
||||
MsgBoxConfig.recordBagList.add(msgBoxBean)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
if(isShowData){
|
||||
if(category == MsgCategory.RECORD_BAG){
|
||||
@@ -159,6 +160,10 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
|
||||
isShowSummary = false
|
||||
}
|
||||
}else{
|
||||
if(msgBoxBean.type == MsgBoxType.V2X){
|
||||
//鹰眼650需求,不再展示气泡态V2X消息
|
||||
return@post
|
||||
}
|
||||
showData(msgBoxBean)
|
||||
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
|
||||
}
|
||||
|
||||
@@ -70,8 +70,7 @@ class PassengerMsgBoxBubbleView @JvmOverloads constructor(
|
||||
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
|
||||
UiThreadHandler.post({
|
||||
if(category == MsgCategory.NOTICE){
|
||||
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|
||||
|| msgBoxList.type == MsgBoxType.OBU){
|
||||
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.OBU){
|
||||
if(isCacheMsg){
|
||||
//将消息缓存到未播放列表等待小智语音播放完成后取出播放
|
||||
MsgBoxConfig.unPlayList.add(msgBoxList)
|
||||
|
||||
@@ -23,9 +23,15 @@ import com.mogo.eagle.core.function.hmi.R
|
||||
class AutomaticExplorationAdapter(val context: Context,val user: Int): RecyclerView.Adapter<AutomaticExplorationAdapter.ExplorationHolder>() {
|
||||
|
||||
private var data: List<AutoExplorationEntity> ?= null
|
||||
private var completeListener: CompleteListener ?= null
|
||||
|
||||
fun setData(data: List<AutoExplorationEntity>){
|
||||
this.data = data
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setListener(listener: CompleteListener){
|
||||
completeListener = listener
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ExplorationHolder {
|
||||
@@ -44,15 +50,17 @@ class AutomaticExplorationAdapter(val context: Context,val user: Int): RecyclerV
|
||||
|
||||
override fun onBindViewHolder(holder: ExplorationHolder, position: Int) {
|
||||
data?.let {
|
||||
holder.tvExplorationContent.text = it[position].explorationContent
|
||||
val entity = it[position]
|
||||
holder.tvExplorationContent.text = entity.explorationContent
|
||||
val rotationAnim = ObjectAnimator.ofFloat(holder.ivExplorationLoading, "rotation", 0f, 360f)
|
||||
rotationAnim.repeatCount = it[position].explorationDuration.toInt()/1000
|
||||
rotationAnim.repeatCount = entity.explorationDuration.toInt()/1000
|
||||
rotationAnim.repeatMode = ValueAnimator.RESTART
|
||||
rotationAnim.duration = 1000
|
||||
rotationAnim.interpolator = LinearInterpolator()
|
||||
rotationAnim.addListener(object: AnimatorListenerAdapter(){
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
super.onAnimationEnd(animation)
|
||||
completeListener?.onComplete(entity)
|
||||
if(user == 0){
|
||||
holder.ivExplorationLoading.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
@@ -77,4 +85,8 @@ class AutomaticExplorationAdapter(val context: Context,val user: Int): RecyclerV
|
||||
var tvExplorationContent: TextView = itemView.findViewById(R.id.tvExplorationContent)
|
||||
}
|
||||
|
||||
interface CompleteListener{
|
||||
fun onComplete(entity: AutoExplorationEntity)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.hmi.ui.notice.exploration
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.content.Context
|
||||
import android.os.CountDownTimer
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -13,7 +14,12 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.MsgCategory
|
||||
import com.mogo.eagle.core.data.notice.AutoExplorationEntity
|
||||
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
|
||||
@@ -26,7 +32,7 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener {
|
||||
|
||||
private var user = 0
|
||||
private var ivClose: ImageView ?= null //关闭按钮
|
||||
@@ -34,10 +40,12 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
private var rvExplorationList: RecyclerView ?= null
|
||||
private var automaticExplorationAdapter: AutomaticExplorationAdapter ?= null
|
||||
private var rotationAnim: ObjectAnimator ?= null
|
||||
private var showViewTimer: CountDownTimer ?= null //展示自动探查倒计时
|
||||
|
||||
companion object {
|
||||
private const val TAG = "AutomaticExplorationView"
|
||||
private const val EXPLORATION_SHOW_TIME = 10000L //自动探查弹窗展示时间
|
||||
private const val EXPLORATION_HIDE_TIME = 5000L //探查完毕后,5秒关闭弹窗
|
||||
private const val EXPLORATION_SHOW_TIME = 300000L //距离用户在触发上一次事件播报的时间5分钟后,自动触发常规道路情况检测
|
||||
}
|
||||
|
||||
init {
|
||||
@@ -54,20 +62,14 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
LayoutInflater.from(context).inflate(R.layout.view_automatic_exploration_p, this, true)
|
||||
}
|
||||
initEvent()
|
||||
initData()
|
||||
CallerMsgBoxListenerManager.addListener(TAG,this)
|
||||
}
|
||||
|
||||
fun showAutoExploration(){
|
||||
//倒计时
|
||||
|
||||
//语音播放
|
||||
AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇行车助手将持续守候您的出行")
|
||||
|
||||
//隐藏自动探查视图
|
||||
private fun showAutoExploration(){
|
||||
ThreadUtils.runOnUiThread {
|
||||
this@AutomaticExplorationView.visibility = View.GONE
|
||||
this@AutomaticExplorationView.visibility = View.VISIBLE
|
||||
initData()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun initEvent(){
|
||||
@@ -78,34 +80,74 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
rotationAnim?.cancel()
|
||||
this.visibility = View.GONE
|
||||
}
|
||||
//启动扫描
|
||||
ivScan?.let {
|
||||
rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f)
|
||||
rotationAnim?.repeatCount = ValueAnimator.INFINITE
|
||||
rotationAnim?.repeatMode = ValueAnimator.RESTART
|
||||
rotationAnim?.duration = 2000
|
||||
rotationAnim?.interpolator = LinearInterpolator()
|
||||
rotationAnim?.start()
|
||||
}
|
||||
rvExplorationList = findViewById(R.id.rvExplorationList)
|
||||
val linearLayoutManager = LinearLayoutManager(context)
|
||||
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
|
||||
automaticExplorationAdapter = AutomaticExplorationAdapter(context,user)
|
||||
rvExplorationList?.adapter = automaticExplorationAdapter
|
||||
rvExplorationList?.layoutManager = linearLayoutManager
|
||||
startShowTimer()
|
||||
}
|
||||
|
||||
private fun startShowTimer(){
|
||||
ThreadUtils.runOnUiThread {
|
||||
showViewTimer = object: CountDownTimer(EXPLORATION_SHOW_TIME,EXPLORATION_SHOW_TIME){
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
showAutoExploration()
|
||||
}
|
||||
}
|
||||
showViewTimer?.start()
|
||||
}
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
val dataList = ArrayList<AutoExplorationEntity>()
|
||||
dataList.add(AutoExplorationEntity("当前道路事件分析",2000L))
|
||||
dataList.add(AutoExplorationEntity("前方车辆",2000L))
|
||||
dataList.add(AutoExplorationEntity("两侧车辆",3000L))
|
||||
dataList.add(AutoExplorationEntity("后方车辆",3000L))
|
||||
dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L))
|
||||
dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4000L))
|
||||
dataList.add(AutoExplorationEntity("路侧视频分析",5000L))
|
||||
automaticExplorationAdapter?.setData(dataList)
|
||||
val dataList = ArrayList<AutoExplorationEntity>(7)
|
||||
dataList.add(AutoExplorationEntity("当前道路事件分析",2000L,false))
|
||||
dataList.add(AutoExplorationEntity("前方车辆",2000L,false))
|
||||
dataList.add(AutoExplorationEntity("两侧车辆",2600L,false))
|
||||
dataList.add(AutoExplorationEntity("后方车辆",3000L,false))
|
||||
dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L,false))
|
||||
dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4300L,false))
|
||||
dataList.add(AutoExplorationEntity("路侧视频分析",5000L,false))
|
||||
automaticExplorationAdapter?.setListener(object: AutomaticExplorationAdapter.CompleteListener{
|
||||
override fun onComplete(entity: AutoExplorationEntity) {
|
||||
var allComplete = true //所有探查项目都探查完毕
|
||||
dataList.forEach {
|
||||
if(it.explorationContent == entity.explorationContent){
|
||||
it.explorationComplete = true
|
||||
}
|
||||
if(!it.explorationComplete){
|
||||
allComplete = false
|
||||
}
|
||||
}
|
||||
if(allComplete){
|
||||
//语音播放
|
||||
AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇行车助手将持续守候您的出行")
|
||||
//5秒后关闭弹窗
|
||||
val hideViewTimer =object: CountDownTimer(EXPLORATION_HIDE_TIME,EXPLORATION_HIDE_TIME){
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
//隐藏自动探查视图
|
||||
ThreadUtils.runOnUiThread {
|
||||
this@AutomaticExplorationView.visibility = View.GONE
|
||||
}
|
||||
//重新开始下一轮展示倒计时
|
||||
startShowTimer()
|
||||
}
|
||||
}
|
||||
hideViewTimer.start()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
automaticExplorationAdapter?.setData(dataList)
|
||||
//每出现一次自动探查,增加相应的服务次数
|
||||
//车辆服务次数
|
||||
AutopilotSummaryInfo.vehicleServiceNum += 31
|
||||
@@ -117,10 +159,33 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
AutopilotSummaryInfo.vulnerableTipNum += 4
|
||||
//消除安全风险隐患次数
|
||||
AutopilotSummaryInfo.dangerNum += 24
|
||||
//启动扫描
|
||||
ivScan?.let {
|
||||
rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f)
|
||||
rotationAnim?.repeatCount = ValueAnimator.INFINITE
|
||||
rotationAnim?.repeatMode = ValueAnimator.RESTART
|
||||
rotationAnim?.duration = 2000
|
||||
rotationAnim?.interpolator = LinearInterpolator()
|
||||
rotationAnim?.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerMsgBoxListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 距离用户在触发上一次事件播报的时间5分钟后,自动触发常规道路情况检测
|
||||
*/
|
||||
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
|
||||
if(category == MsgCategory.NOTICE){
|
||||
if(msgBoxList.type == MsgBoxType.V2X){
|
||||
//重置倒计时时长
|
||||
showViewTimer?.cancel()
|
||||
startShowTimer()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.TrafficLightEnum
|
||||
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
|
||||
@@ -101,6 +102,8 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
//如果当前红绿灯视图为隐藏状态则设置为显示状态
|
||||
if(this@FusionTrafficLightView.visibility == View.GONE){
|
||||
this@FusionTrafficLightView.visibility = View.VISIBLE
|
||||
AutopilotSummaryInfo.intersectionServicesNum++
|
||||
AutopilotSummaryInfo.lightServicesNum++
|
||||
//首次展示,需要将当前、下一、下二灯态的时间占比绘制出来,只绘制一次
|
||||
val proportionList = ArrayList<Int>(3)
|
||||
proportionList.add(0)
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isTaxi
|
||||
import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.Marker
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.MarkerOptions
|
||||
import mogo.telematics.pad.MessagePad.*
|
||||
|
||||
object TrackerSourceFilterHelper {
|
||||
@@ -112,7 +114,7 @@ object TrackerSourceFilterHelper {
|
||||
.setDisplayAnim(true)
|
||||
.setAnimScale(getAnimScale(data.type))
|
||||
.build()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.showOrUpdatePoint(opt)
|
||||
CallerMapUIServiceManager.getOverlayManager()?.updateAnimPoint(opt)
|
||||
//消息埋点
|
||||
CallerFuncBizListenerManager.invokeAttrZombieAnalyticsEvent()
|
||||
}
|
||||
|
||||
@@ -526,6 +526,13 @@ enum class EventTypeEnumNew(
|
||||
content = "保持当前车速即可通过路口,好丝滑!",
|
||||
tts = "保持当前车速即可通过路口,好丝滑!"
|
||||
),
|
||||
TYPE_SOCKET_ROAD_PEOPLE_CROSS(
|
||||
"100064",
|
||||
"行人横穿",
|
||||
poiTypeSrcVr = View.NO_ID,
|
||||
content = "前方%s米有行人/非机动车横穿,蘑菇提醒您提前减速,注意观察,小心通过",
|
||||
tts = "前方%s米有行人/非机动车横穿,蘑菇提醒您提前减速,注意观察,小心通过"
|
||||
),
|
||||
TYPE_ERROR(
|
||||
0.toString(),
|
||||
"未知/错误/异常",
|
||||
@@ -822,6 +829,8 @@ enum class EventTypeEnumNew(
|
||||
}
|
||||
}
|
||||
TYPE_SOCKET_ROAD_CONGESTION.poiType -> R.raw.v2x_yongdu
|
||||
TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType -> if (FunctionBuildConfig.skinMode != 0) TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE.traffic3DIconId else TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE.traffic3DNightIconId
|
||||
TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType -> if (FunctionBuildConfig.skinMode != 0) TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE.traffic3DIconId else TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE.traffic3DNightIconId
|
||||
else -> 0
|
||||
}
|
||||
}
|
||||
@@ -1194,6 +1203,8 @@ enum class EventTypeEnumNew(
|
||||
TYPE_SOCKET_ROAD_CONGESTION.poiType -> R.drawable.v2x_icon_yongdu_vr
|
||||
// 他车逆行/倒车
|
||||
TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType -> if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) R.drawable.icon_v2x_other_retrograde_vehicle_passenger else R.drawable.icon_v2x_other_retrograde_vehicle_driver
|
||||
// 行人/非机动车横穿
|
||||
TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType -> if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) R.drawable.icon_xingren_hengchuan_passenger else R.drawable.icon_xingren_hengchuan_driver
|
||||
// 通过公交站
|
||||
TYPE_USECASE_ROAD_BUS_STATION.poiType -> if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) R.drawable.icon_v2x_bus_station_passenger else R.drawable.icon_v2x_bus_station_driver
|
||||
//拥堵
|
||||
|
||||
@@ -3,4 +3,4 @@ package com.mogo.eagle.core.data.notice
|
||||
/**
|
||||
* 自动探查
|
||||
*/
|
||||
data class AutoExplorationEntity(var explorationContent: String,var explorationDuration: Long)
|
||||
data class AutoExplorationEntity(var explorationContent: String,var explorationDuration: Long,var explorationComplete: Boolean)
|
||||
@@ -15,11 +15,14 @@ import android.widget.PopupWindow
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.core.view.doOnAttach
|
||||
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
class MoGoPopWindow private constructor(builder: Builder){
|
||||
|
||||
companion object {
|
||||
private const val TAG = "MoGoPopWindow"
|
||||
}
|
||||
|
||||
private val content: View = builder.content ?: throw AssertionError("要填充的View不能为空")
|
||||
|
||||
@@ -109,9 +112,19 @@ class MoGoPopWindow private constructor(builder: Builder){
|
||||
val params = content.rootView.layoutParams as WindowManager.LayoutParams
|
||||
val oldX = params.x
|
||||
val oldY = params.y
|
||||
val newX = oldX + dx
|
||||
val newY = oldY + dy
|
||||
Logger.d(TAG, "oldX: $oldX, oldY: $oldY, dx: $dx, dy:$dy")
|
||||
var newX = oldX + dx
|
||||
var newY = oldY + dy
|
||||
if (outer.contains(rawX.toInt(), rawY.toInt())) {
|
||||
val width = activity.resources.displayMetrics.widthPixels
|
||||
val height = activity.resources.displayMetrics.heightPixels
|
||||
// if (newX < 0) {
|
||||
// newX += newX
|
||||
// }
|
||||
// if (newY < 0) {
|
||||
// newY += height
|
||||
// }
|
||||
Logger.d(TAG, "screen_width: $width, screen_height: $height, newX: $newX, newY: $newY, rawX: ${rawX.toInt()}, rawY: ${rawY.toInt()}, width: ${content.width}, height: ${content.height}")
|
||||
pop.update(newX, newY, content.width, content.height)
|
||||
}
|
||||
oldRawX = rawX
|
||||
@@ -252,7 +265,7 @@ class MoGoPopWindow private constructor(builder: Builder){
|
||||
}
|
||||
|
||||
fun offsetX(x: Int) = apply {
|
||||
this.offsetY = x
|
||||
this.offsetX = x
|
||||
}
|
||||
|
||||
fun offsetY(y: Int) = apply {
|
||||
|
||||
@@ -33,6 +33,8 @@ interface IMogoMap {
|
||||
|
||||
fun addPoint(options: Point.Options): IMapPointOverlay?
|
||||
|
||||
fun addAnimPoint(options: Point.Options)
|
||||
|
||||
fun addLine(options: Polyline.Options): IMapPolylineOverlay?
|
||||
|
||||
/**
|
||||
|
||||
@@ -75,4 +75,6 @@ interface IMoGoOverlayManager {
|
||||
fun hideAllPointsExceptIds(vararg ids: String)
|
||||
|
||||
fun hideAllPointsExceptOwners(vararg owners: String)
|
||||
|
||||
fun updateAnimPoint(options: Point.Options, mapTag:String = DEFAULT)
|
||||
}
|
||||
@@ -11,8 +11,10 @@ import com.mogo.map.overlay.wrapper.line.AMapPolylineWrapper
|
||||
import com.mogo.map.overlay.wrapper.point.AMapPointWrapper
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController
|
||||
import com.mogo.map.utils.ObjectUtils
|
||||
import com.zhidaoauto.map.data.point.LonLatPoint
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.BatchMarkerOptions
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.Marker
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.MarkerOptions
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.MarkerSimpleData
|
||||
import com.zhidaoauto.map.sdk.open.renders.marker.OnMarkClickListener
|
||||
import com.zhidaoauto.map.sdk.open.view.MapAutoView
|
||||
@@ -66,6 +68,20 @@ class AMapWrapper(map: MapAutoViewHelper?, mapView: MapAutoView, controller: IMo
|
||||
return AMapPointWrapper(options.id, delegate, mMapView)
|
||||
}
|
||||
|
||||
override fun addAnimPoint(options: Point.Options) {
|
||||
if (!checkAMap()) {
|
||||
return
|
||||
}
|
||||
val markerOptions = MarkerOptions(options.id, mMapView.getMapController()).setGps(true)
|
||||
.position(LonLatPoint(options.longitude, options.latitude, options.rotate.toDouble()))
|
||||
val marker = Marker(markerOptions,mMapView.getMapController(),
|
||||
mMapView.getMapController()?.getMarkerCall()
|
||||
)
|
||||
marker.setDisplayAnimEnable(true)
|
||||
marker.setAnimResource(options.animRes)
|
||||
marker.setAnimScale(options.animScale)
|
||||
}
|
||||
|
||||
override fun addLine(options: Polyline.Options): IMapPolylineOverlay? {
|
||||
if (!checkAMap()) {
|
||||
return null
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.view.View
|
||||
import com.mogo.eagle.core.data.map.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoMap
|
||||
import com.mogo.map.overlay.point.Point.Options
|
||||
import com.mogo.map.MogoMap.Companion.mapInstance
|
||||
import com.mogo.map.overlay.core.*
|
||||
@@ -49,13 +50,15 @@ internal class MoGoOverlayManagerImpl: IMoGoOverlayManager {
|
||||
key.delegate = point
|
||||
it.setToTop()
|
||||
if (options.moveToCenter) {
|
||||
val wgs84 = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val cj02 = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||
moveToCenter(
|
||||
mapTag,
|
||||
options.id,
|
||||
options.longitude,
|
||||
options.latitude,
|
||||
if (options.isGps) CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude else CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude,
|
||||
if (options.isGps) CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude else CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude
|
||||
if (options.isGps) wgs84.longitude else cj02.longitude,
|
||||
if (options.isGps) wgs84.latitude else cj02.latitude
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -452,4 +455,8 @@ internal class MoGoOverlayManagerImpl: IMoGoOverlayManager {
|
||||
it.value.setVisible(false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateAnimPoint(options: Options, mapTag:String) {
|
||||
mapInstance.getMogoMap(mapTag)?.addAnimPoint(options)
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.mogo.map.utils;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
@@ -65,9 +64,6 @@ public class ObjectUtils {
|
||||
.controlAngle(opt.isControlAngle())
|
||||
.rotateAngle(opt.getRotate())
|
||||
.setFlat(opt.isFlat())
|
||||
// .setAnimResource()
|
||||
// .setDisplayAnimEnable()
|
||||
// .setAnimScale()
|
||||
.visible(opt.isVisible())
|
||||
.infoWindowEnable(opt.isInfoWindowEnable())
|
||||
.scale(opt.getScale())
|
||||
|
||||
Reference in New Issue
Block a user