diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 4ff10f68a5..83405b8de1 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -91,7 +91,6 @@
-
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index ba46533d1a..5279db84d2 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -30,7 +30,7 @@
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
index 435dd0f2fd..ead583110a 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
@@ -34,6 +34,16 @@ public interface MarkerPoiTypeEnum {
String FOURS_PARKING = "10012";
//事故
String FOURS_ACCIDENT = "10013";
+ //重大事故
+ String FOURS_ACCIDENT_01 = "1001301";
+ //特大事故
+ String FOURS_ACCIDENT_02 = "1001302";
+ //较大事故
+ String FOURS_ACCIDENT_03 = "1001303";
+ //一般事故
+ String FOURS_ACCIDENT_04 = "1001304";
+ //轻微事故
+ String FOURS_ACCIDENT_05 = "1001305";
//身边
String FOURS_NEALY = "10014";
//实时路况
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XRoadEventEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XRoadEventEntity.java
index 80039b4244..a950a82ba0 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XRoadEventEntity.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XRoadEventEntity.java
@@ -96,6 +96,11 @@ public class V2XRoadEventEntity implements Serializable {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
tts += "交通事故";
break;
default:
@@ -156,6 +161,11 @@ public class V2XRoadEventEntity implements Serializable {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
tts += "交通事故";
break;
default:
@@ -222,6 +232,11 @@ public class V2XRoadEventEntity implements Serializable {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
alarmContent = "前方交通事故";
break;
default:
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java
index 532dca9d7a..b4a0bd6382 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java
@@ -126,6 +126,14 @@ public class V2XWarningEntity implements Serializable {
this.speed = speed;
}
+ public long getShowTime() {
+ return showTime;
+ }
+
+ public void setShowTime(long showTime) {
+ this.showTime = showTime;
+ }
+
public void setStopLineDistance(double stopLineDistance) {
this.stopLineDistance = stopLineDistance;
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CloudPoiManager.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CloudPoiManager.java
index 13508a8fb6..a67b8a791f 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CloudPoiManager.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/CloudPoiManager.java
@@ -23,7 +23,8 @@ public class CloudPoiManager {
private Map poiWrapper = new ArrayMap<>();
private static CloudPoiManager instance = null;
- public static CloudPoiManager getInstance(){
+
+ public static CloudPoiManager getInstance() {
if (instance == null) {
synchronized (CloudPoiManager.class) {
if (instance == null) {
@@ -34,43 +35,53 @@ public class CloudPoiManager {
return instance;
}
- public void generateDefault(){
+ public void generateDefault() {
if (poiWrapper.isEmpty()) {
- poiWrapper.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION,R.drawable.module_common_icon_map_marker_refuel,
+ poiWrapper.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION, R.drawable.module_common_icon_map_marker_refuel,
R.drawable.module_common_icon_map_marker_refuel, "加油站"));
poiWrapper.put(MarkerPoiTypeEnum.TRAFFIC_CHECK, new PoiWrapper(MarkerPoiTypeEnum.TRAFFIC_CHECK,
- R.drawable.module_common_icon_map_marker_road_check2,R.drawable.module_common_icon_map_marker_road_check2_white, "交通检查"));
+ R.drawable.module_common_icon_map_marker_road_check2, R.drawable.module_common_icon_map_marker_road_check2_white, "交通检查"));
poiWrapper.put(MarkerPoiTypeEnum.ROAD_CLOSED, new PoiWrapper(MarkerPoiTypeEnum.ROAD_CLOSED,
- R.drawable.module_common_icon_map_marker_road_block_off2,R.drawable.module_common_icon_map_marker_road_block_off2_white, "封路"));
+ R.drawable.module_common_icon_map_marker_road_block_off2, R.drawable.module_common_icon_map_marker_road_block_off2_white, "封路"));
poiWrapper.put(MarkerPoiTypeEnum.SHOP_DISCOUNT, new PoiWrapper(MarkerPoiTypeEnum.SHOP_DISCOUNT,
- R.drawable.module_common_icon_map_marker_shop_discount,R.drawable.module_common_icon_map_marker_shop_discount, "商场打折"));
+ R.drawable.module_common_icon_map_marker_shop_discount, R.drawable.module_common_icon_map_marker_shop_discount, "商场打折"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_4S, new PoiWrapper(MarkerPoiTypeEnum.FOURS_4S,
- R.drawable.module_common_icon_map_marker_4s,R.drawable.module_common_icon_map_marker_4s, "4S店"));
+ R.drawable.module_common_icon_map_marker_4s, R.drawable.module_common_icon_map_marker_4s, "4S店"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK,
- R.drawable.module_common_icon_map_marker_road_work2,R.drawable.module_common_icon_map_marker_road_work2_white, "施工"));
+ R.drawable.module_common_icon_map_marker_road_work2, R.drawable.module_common_icon_map_marker_road_work2_white, "施工"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_BLOCK_UP, new PoiWrapper(MarkerPoiTypeEnum.FOURS_BLOCK_UP,
- R.drawable.module_common_icon_map_marker_road_block_up2,R.drawable.module_common_icon_map_marker_road_block_up2_white, "拥堵"));
+ R.drawable.module_common_icon_map_marker_road_block_up2, R.drawable.module_common_icon_map_marker_road_block_up2_white, "拥堵"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING,
- R.drawable.module_common_icon_map_marker_pondingl2,R.drawable.module_common_icon_map_marker_pondingl2_white, "积水"));
+ R.drawable.module_common_icon_map_marker_pondingl2, R.drawable.module_common_icon_map_marker_pondingl2_white, "积水"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_SHOP_FREE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_SHOP_FREE,
- R.drawable.module_common_icon_map_marker_shop,R.drawable.module_common_icon_map_marker_shop, "超时打折"));
+ R.drawable.module_common_icon_map_marker_shop, R.drawable.module_common_icon_map_marker_shop, "超时打折"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG,
- R.drawable.module_common_ic_rc_dark_frog2,R.drawable.module_common_ic_rc_dark_frog2_white, "浓雾"));
+ R.drawable.module_common_ic_rc_dark_frog2, R.drawable.module_common_ic_rc_dark_frog2_white, "浓雾"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ICE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ICE,
- R.drawable.module_common_ic_rc_freeze2,R.drawable.module_common_ic_rc_freeze2_white, "结冰"));
+ R.drawable.module_common_ic_rc_freeze2, R.drawable.module_common_ic_rc_freeze2_white, "结冰"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_PARKING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PARKING,
- R.drawable.module_common_ic_rc_parking2,R.drawable.module_common_ic_rc_parking2, "停车场"));
+ R.drawable.module_common_ic_rc_parking2, R.drawable.module_common_ic_rc_parking2, "停车场"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT,
- R.drawable.module_common_ic_rc_accident3,R.drawable.module_common_ic_rc_accident3_white, "事故"));
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "事故"));
+ poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT_01, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT_01,
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "重大事故"));
+ poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT_02, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT_02,
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "特大事故"));
+ poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT_03, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT_03,
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "较大事故"));
+ poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT_04, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT_04,
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "一般事故"));
+ poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT_05, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT_05,
+ R.drawable.module_common_ic_rc_accident3, R.drawable.module_common_ic_rc_accident3_white, "轻微事故"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_NEALY, new PoiWrapper(MarkerPoiTypeEnum.FOURS_NEALY,
- R.drawable.module_common_icon_map_marker_shear_news,R.drawable.module_common_icon_map_marker_shear_news, "身边"));
+ R.drawable.module_common_icon_map_marker_shear_news, R.drawable.module_common_icon_map_marker_shear_news, "身边"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_LIVING,
- R.drawable.module_common_icon_map_marker_living,R.drawable.module_common_icon_map_marker_living_white, "实时路况"));
+ R.drawable.module_common_icon_map_marker_living, R.drawable.module_common_icon_map_marker_living_white, "实时路况"));
poiWrapper.put(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING, new PoiWrapper(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING,
- R.drawable.module_common_ic_rc_illegal_park,R.drawable.module_common_ic_rc_illegal_park_white, "违章停车"));
+ R.drawable.module_common_ic_rc_illegal_park, R.drawable.module_common_ic_rc_illegal_park_white, "违章停车"));
// 分享里用到的故障求助
poiWrapper.put("9999", new PoiWrapper("9999",
- R.drawable.module_common_icon_seek_help,R.drawable.module_common_icon_seek_help, "故障求助"));
+ R.drawable.module_common_icon_seek_help, R.drawable.module_common_icon_seek_help, "故障求助"));
}
}
@@ -81,13 +92,13 @@ public class CloudPoiManager {
if (!config.isEmpty()) {
List configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class);
Logger.d(TAG, "config: " + configWrappers);
- if(configWrappers!=null) {
+ if (configWrappers != null) {
for (PoiWrapper wrapper : configWrappers) {
wrapper.setIconInfoRes(R.drawable.module_common_icon_map_marker_road_block_up2_white);
wrapper.setIconRes(R.drawable.module_common_icon_map_marker_road_block_up2);
- if(poiWrapper.containsKey(wrapper.getPoiType())) {
+ if (poiWrapper.containsKey(wrapper.getPoiType())) {
PoiWrapper defWrapper = poiWrapper.get(wrapper.getPoiType());
- if(defWrapper!=null) {
+ if (defWrapper != null) {
wrapper.setIconRes(defWrapper.getIconRes());
wrapper.setIconInfoRes(defWrapper.getIconInfoRes());
}
@@ -95,7 +106,7 @@ public class CloudPoiManager {
Logger.d(TAG, "put===" + wrapper);
poiWrapper.put(wrapper.getPoiType(), wrapper);
}
- }else{
+ } else {
Logger.e(TAG, "解析configWrapper异常: " + config);
}
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XStatusManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XStatusManager.java
index eca9f0f957..1dfdf64b5a 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XStatusManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XStatusManager.java
@@ -54,7 +54,7 @@ public class V2XStatusManager {
if (mLocation == null) {
mLocation = new MogoLocation();
}
- //Logger.d(V2XConst.MODULE_NAME, "当前车辆位置:" + mLocation.toString());
+ Logger.d(V2XConst.MODULE_NAME, "当前车辆位置:" + mLocation.toString());
return mLocation;
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
index 9514f894ce..5f1b226064 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.voice.AIAssist;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
+import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.adapter.holder.V2XSurroundingViewHolder;
import com.mogo.module.v2x.entity.panel.SurroundingConstruction;
@@ -130,6 +131,11 @@ public class V2XSurroundingAdapter extends RecyclerView.Adapter pointsOdl = mMogoPolyline.getPoints();
+ // 重新设置第一个坐标,也就是当前车辆位置
+ pointsOdl.set(0, new MogoLatLng(location.getLatitude(), location.getLongitude()));
+ mMogoPolyline.setPoints(pointsOdl);
float zoomLevel = V2XServiceManager.getMapUIController().getZoomLevel();
//Logger.d(V2XConst.MODULE_NAME, "当前地图的缩放比例为:" + zoomLevel);
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XPolylineManager.java
index 237dd6d0f3..8ff7acf02a 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XPolylineManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XPolylineManager.java
@@ -6,6 +6,8 @@ import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import java.util.List;
+
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
index e9b15b4f78..d30a11282e 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
@@ -34,6 +34,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_LINE_DATA;
import static com.mogo.module.v2x.V2XConst.V2X_FRONT_WARNING_MARKER;
import static com.mogo.module.v2x.V2XServiceManager.getContext;
@@ -46,7 +47,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
private static String TAG = "MoGoV2XCloundDataManager";
private boolean isSelfLineClear;
private List fillPoints = new ArrayList();//停止线经纬度合集
-
+ private static long showTime = 0;
@Override
public void init(Context context) {
@@ -59,6 +60,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> ");
mCloundWarningInfo = cloundWarningInfo;
+ showTime = mCloundWarningInfo.getShowTime();
pointsBetween();
//发送预警提示
@@ -68,24 +70,23 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
Log.d(V2XConst.LOG_NAME_WARN, "direction = " + cloundWarningInfo.getDirection());
if (cloundWarningInfo.getDirection() == 1) { //前方
+ MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle());
//停止线前方画线
- MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.heading);
WorkThreadHandler.getInstance().postDelayed(() -> {
+ //添加停止线
+ drawStopLineWith2Resource();
//二轮车和行人的渲染和移动
V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
//绘制识别物与交汇点连线,并且更新连线数据
drawStopLine(cloundWarningInfo, newLocation);
- //添加停止线marker
- drawStopLineWith2Resource();
}, 200);
UiThreadHandler.postDelayed(() -> {
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoStopPolylineManager().clearLine();
-
isSelfLineClear = true;
- }, 8000);
+ }, showTime);
} else { //左侧或者右侧
WorkThreadHandler.getInstance().postDelayed(() -> {
@@ -99,9 +100,8 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
UiThreadHandler.postDelayed(() -> {
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
-
isSelfLineClear = true;
- }, 8000);
+ }, showTime);
}
}
@@ -125,26 +125,29 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
* 2D资源绘制停止线
* */
private void drawStopLineWith2Resource() {
- mCloundWarningInfo.setCarLocation(new MogoLatLng(39.976866,116.417622));//测试数据
MogoLatLng carlo = mCloundWarningInfo.getCarLocation();
- if (carlo == null){
+ if (carlo == null) {
double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon();
double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat();
carlo = new MogoLatLng(lat, lon);
}
+ //自车行驶方向的前方*米的经纬度,该经纬度在停止线上
MogoLatLng drawStopLineLon = LocationUtils.getNewLocation(carlo, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
-
+ Log.d(TAG, "2D资源绘制停止线" + drawStopLineLon);
MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
.latitude(drawStopLineLon.getLat())
.longitude(drawStopLineLon.getLon())
- .anchor(0.5f, 0.5f)
+ .anchor(1.0f, 1.0f)
.zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH);
optionsRipple
.icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext())));
- IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple);
+ IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(TYPE_MARKER_CLOUD_STOP_LINE_DATA, optionsRipple);
stopLine.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext())));
stopLine.showInfoWindow();
+ UiThreadHandler.postDelayed(() -> {
+ stopLine.hideInfoWindow();
+ }, showTime);
}
/**
@@ -224,6 +227,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
public void onCarLocationChanged2(Location latLng) {
Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear);
//当行人经纬度交点 开始画线,否则清理
+ mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
drawSlefCarLine(latLng);
}
@@ -295,7 +299,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
private MogoLatLng getMogoLat(MogoLatLng latlng) {
MogoLatLng newLocation = LocationUtils.getNewLocation(latlng, mCloundWarningInfo.getDistance(), mCloundWarningInfo.getDirection());
-
return newLocation;
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
index 6bcd120cee..0986ac3deb 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java
@@ -20,6 +20,7 @@ import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerNoveltyInfo;
import com.mogo.module.common.entity.MarkerOnlineCar;
+import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XRoadEventEntity;
@@ -395,6 +396,11 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
case V2XPoiTypeEnum.FOURS_ICE:
case V2XPoiTypeEnum.FOURS_FOG:
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
drawableMarker(
V2XServiceManager.getContext(),
markerShowEntity,
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java
index a8184cce51..4e678071b6 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XPolylineManager.java
@@ -6,10 +6,10 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.map.MogoLatLng;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
-import com.mogo.module.v2x.MoGoV2XServicePaths;
-import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.v2x.MoGoV2XServicePaths;
+import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.manager.IMoGoV2XPolylineManager;
import java.util.ArrayList;
@@ -66,7 +66,7 @@ public class MoGoV2XPolylineManager implements IMoGoV2XPolylineManager {
} else {
options.add(V2XServiceManager.getV2XStatusManager().getLocation());
}
- // 目标车辆位置
+ // 目标车辆、道路事件位置
options.add(V2XServiceManager.getV2XStatusManager().getTargetMoGoLatLng());
// 绘制线的对象
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationObserver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationObserver.java
new file mode 100644
index 0000000000..e0e414b6dc
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationObserver.java
@@ -0,0 +1,13 @@
+package com.mogo.module.v2x.observer;
+
+import com.mogo.map.location.MogoLocation;
+
+/**
+ * @author donghongyu
+ * @date 4/9/21 2:14 PM
+ * 当前车辆位置观察者接口
+ */
+public abstract class CarLocationObserver {
+ // 更新状态
+ public abstract void update(MogoLocation carLocation);
+}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationSubject.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationSubject.java
new file mode 100644
index 0000000000..1f238875ad
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/CarLocationSubject.java
@@ -0,0 +1,63 @@
+package com.mogo.module.v2x.observer;
+
+import com.mogo.map.location.MogoLocation;
+
+import java.util.HashMap;
+import java.util.Set;
+
+/**
+ * @author donghongyu
+ * @date 4/9/21 2:12 PM
+ * 当前车辆订阅
+ */
+public class CarLocationSubject {
+
+ // 车辆位置
+ public MogoLocation carLocation;
+ // 观察者集合
+ private HashMap observers = new HashMap();
+
+
+ /**
+ * 设置新的车辆位置
+ *
+ * @param carLocation 车辆位置
+ */
+ public void setCarLocation(MogoLocation carLocation) {
+ this.carLocation = carLocation;
+ notifyAllObservers();
+ }
+
+ /**
+ * 添加观察者
+ *
+ * @param observerType 观察者类型
+ * @param observer 新的观察者
+ */
+ public void registerObserver(String observerType, CarLocationObserver observer) {
+ observers.put(observerType, observer);
+ }
+
+ /**
+ * 移除指定类型的观察者
+ *
+ * @param observerType 观察者类型
+ */
+ public void removeObserver(String observerType) {
+ observers.remove(observerType);
+ }
+
+ /**
+ * 通知所有观察者更新
+ */
+ private void notifyAllObservers() {
+ Set keySet = observers.keySet();
+ for (String s : keySet) {
+ CarLocationObserver observer = observers.get(s);
+ if (observer != null) {
+ observer.update(carLocation);
+ }
+ }
+ }
+
+}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/V2XOptimalRouteObserver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/V2XOptimalRouteObserver.java
new file mode 100644
index 0000000000..3cb63df494
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/observer/V2XOptimalRouteObserver.java
@@ -0,0 +1,50 @@
+package com.mogo.module.v2x.observer;
+
+import com.mogo.map.location.MogoLocation;
+import com.mogo.module.v2x.overlay.V2XOptimalRouteOverlay;
+
+import java.util.List;
+
+/**
+ * @author donghongyu
+ * @date 4/9/21 2:38 PM
+ * 最优路线推荐
+ */
+public class V2XOptimalRouteObserver extends CarLocationObserver {
+ public static String TYPE = "V2XOptimalRouteObserver";
+
+ private static V2XOptimalRouteObserver v2XOptimalRouteObserver;
+ //最优路线覆盖物绘制
+ private V2XOptimalRouteOverlay mV2XOptimalRouteOverlay;
+ // 要绘制的数据
+ private List polylinePoint;
+
+ public static V2XOptimalRouteObserver getInstance() {
+ if (v2XOptimalRouteObserver == null) {
+ synchronized (V2XOptimalRouteObserver.class) {
+ if (v2XOptimalRouteObserver == null) {
+ v2XOptimalRouteObserver = new V2XOptimalRouteObserver();
+ }
+ }
+ }
+ return v2XOptimalRouteObserver;
+ }
+
+ private V2XOptimalRouteObserver() {
+ mV2XOptimalRouteOverlay = new V2XOptimalRouteOverlay();
+ }
+
+ /**
+ * 设置推荐路线
+ *
+ * @param polylinePoint 推荐的路线
+ */
+ public void setPolylinePoint(List polylinePoint) {
+ this.polylinePoint = polylinePoint;
+ }
+
+ @Override
+ public void update(MogoLocation carLocation) {
+ mV2XOptimalRouteOverlay.draw(carLocation, polylinePoint);
+ }
+}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/overlay/V2XOptimalRouteOverlay.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/overlay/V2XOptimalRouteOverlay.java
new file mode 100644
index 0000000000..9fc0e80b67
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/overlay/V2XOptimalRouteOverlay.java
@@ -0,0 +1,66 @@
+package com.mogo.module.v2x.overlay;
+
+import com.mogo.map.MogoLatLng;
+import com.mogo.map.location.MogoLocation;
+import com.mogo.map.overlay.IMogoPolyline;
+import com.mogo.map.overlay.MogoPolylineOptions;
+import com.mogo.module.v2x.V2XServiceManager;
+import com.mogo.module.v2x.utils.LocationUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 最优路线推荐的图覆盖物
+ *
+ * @author donghongyu
+ * @date 4/8/21 6:06 PM
+ */
+public class V2XOptimalRouteOverlay {
+ private IMogoPolyline mMoGoPolyline;
+ // 连接线参数
+ private MogoPolylineOptions mPolylineOptions;
+ // 线路径集合
+ private List mPolylinePointList;
+
+ public V2XOptimalRouteOverlay() {
+ mPolylineOptions = new MogoPolylineOptions();
+ // 渐变色
+ List colors = new ArrayList<>();
+ colors.add(0xFFF95959);
+ // 线条粗细,渐变,渐变色值
+ mPolylineOptions.width(25).useGradient(true).colorValues(colors);
+ // 绘制路径集合
+ mPolylinePointList = new ArrayList<>();
+ }
+
+ /**
+ * 绘制最优路线
+ *
+ * @param polylinePoint 要绘制的经纬度度集合
+ */
+ public IMogoPolyline draw(MogoLocation carLocal, List polylinePoint) {
+ if (mMoGoPolyline != null) {
+ mMoGoPolyline.remove();
+ mPolylinePointList.clear();
+ }
+ if (polylinePoint != null) {
+ // 将当前车辆位置放进去
+ mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude()));
+ // 过滤后台推送的推荐路线集合
+ for (double[] polyline : polylinePoint) {
+ MogoLatLng pointMoGoLatLng = new MogoLatLng(polyline[1], polyline[0]);
+ //需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃
+ if (LocationUtils.isPointOnCarFront(carLocal, pointMoGoLatLng)) {
+ mPolylinePointList.add(pointMoGoLatLng);
+ }
+ }
+ }
+ // 替换路径集合
+ mPolylineOptions.points(mPolylinePointList);
+ // 绘制线
+ mMoGoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(mPolylineOptions);
+ return mMoGoPolyline;
+ }
+
+}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
index 4b45679502..222dd1aa0e 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
@@ -104,11 +104,12 @@ public class V2XScenarioManager implements IV2XScenarioManager {
mV2XScenario = new V2XRecommendRouteScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW:
- if (V2XServiceManager.getMoGoStatusManager().isVrMode()) {
- mV2XScenario = new V2XOptimalRouteVREventScenario();
- } else {
- mV2XScenario = null;
- }
+// if (V2XServiceManager.getMoGoStatusManager().isVrMode()) {
+//
+// } else {
+// mV2XScenario = null;
+// }
+ mV2XScenario = new V2XOptimalRouteVREventScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_TOP:
case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_LEFT:
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventWindow.java
index e0a68ba46d..d76b2356a3 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventWindow.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventWindow.java
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
+import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
@@ -179,6 +180,11 @@ public class V2XRoadEventWindow extends V2XBasWindow
case V2XPoiTypeEnum.FOURS_FOG://浓雾
case V2XPoiTypeEnum.FOURS_ICE://结冰
case V2XPoiTypeEnum.FOURS_ACCIDENT://事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case MarkerPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
case V2XPoiTypeEnum.FOURS_LIVING://实时路况
case V2XPoiTypeEnum.FOURS_NEALY://身边
// 展示道路事件本身详情
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java
index 4dd538fe59..cc0754cbd6 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java
@@ -1,17 +1,13 @@
package com.mogo.module.v2x.scenario.scene.route;
-import com.mogo.map.overlay.IMogoPolyline;
-import com.mogo.map.overlay.MogoPolylineOptions;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
+import com.mogo.module.v2x.observer.V2XOptimalRouteObserver;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.utils.MarkerUtils;
import com.mogo.utils.logger.Logger;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
@@ -22,8 +18,6 @@ import java.util.List;
public class V2XOptimalRouteVREventMarker implements IV2XMarker {
private final String TAG = "V2XPushVREventMarker";
- private static IMogoPolyline mMogoPolyline;
-
@Override
public void drawPOI(V2XPushMessageEntity entity) {
Logger.w(V2XConst.MODULE_NAME + "_" + TAG, "drawPOI 绘制VR Marker");
@@ -32,10 +26,6 @@ public class V2XOptimalRouteVREventMarker implements IV2XMarker colors = new ArrayList<>();
-
- colors.add(0xFFF95959);
-
- // 线条粗细,渐变,渐变色值
- options.width(20).useGradient(true).colorValues(colors);
-
- for (double[] doubles : entity.getRecommendPolyline()) {
- options.add(doubles[0], doubles[1]);
- }
-
- // 绘制线的对象
- mMogoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(options);
+ V2XOptimalRouteObserver.getInstance().setPolylinePoint(entity.getRecommendPolyline());
}
@Override
@@ -79,10 +53,6 @@ public class V2XOptimalRouteVREventMarker implements IV2XMarker {
+ optimalMarker.hideInfoWindow();
+ }, 8000);
} catch (Exception e) {
@@ -76,21 +77,6 @@ public class V2XWarningMarker implements IV2XMarker {
}
- private void drawMarkerWithLocation(MogoLatLng latLng, String tag) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .object(markerShowEntity)
- .latitude(latLng.lat)
- .longitude(latLng.lon);
- IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options);
- options.icon3DRes(com.mogo.module.service.R.raw.people);
- options.anchor(0.5f, 0.5f);
- options.anchorColor("#FF4040");
- IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(tag, options);
- iMarkerView.setMarker(marker);
- marker.setToTop();
- }
-
-
@Override
public void clearPOI() {
V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER);
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java
index c8d2e6b766..c3b54799ea 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java
@@ -70,6 +70,11 @@ public class EventTypeUtils {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
str = "交通事故";
break;
// 实时路况
@@ -113,6 +118,11 @@ public class EventTypeUtils {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
src = R.drawable.v2x_icon_jiaotongshigu_vr;
break;
// 交通检查
@@ -151,6 +161,11 @@ public class EventTypeUtils {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
str = "前方交通事故";
break;
// 交通检查
@@ -189,6 +204,11 @@ public class EventTypeUtils {
case V2XPoiTypeEnum.FOURS_FOG: // 浓雾
case V2XPoiTypeEnum.FOURS_ICE: // 结冰
case V2XPoiTypeEnum.FOURS_ACCIDENT: // 事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
strBg = V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.drawable.bg_v2x_event_type_red_vr : R.drawable.bg_v2x_event_type_read;
break;
default:
@@ -220,6 +240,11 @@ public class EventTypeUtils {
case V2XPoiTypeEnum.FOURS_FOG: // 浓雾
case V2XPoiTypeEnum.FOURS_ICE: // 结冰
case V2XPoiTypeEnum.FOURS_ACCIDENT: // 事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
strBg = R.drawable.bg_v2x_event_type_read;
break;
default:
@@ -247,6 +272,11 @@ public class EventTypeUtils {
case V2XPoiTypeEnum.FOURS_FOG://浓雾
case V2XPoiTypeEnum.FOURS_ICE://结冰
case V2XPoiTypeEnum.FOURS_ACCIDENT://事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
isRoadEvent = true;
break;
}
@@ -268,6 +298,11 @@ public class EventTypeUtils {
case V2XPoiTypeEnum.FOURS_ROAD_WORK://施工
case V2XPoiTypeEnum.FOURS_BLOCK_UP://拥堵
case V2XPoiTypeEnum.FOURS_ACCIDENT://事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
isRoadEvent = true;
break;
}
@@ -309,6 +344,11 @@ public class EventTypeUtils {
break;
// 事故
case V2XPoiTypeEnum.FOURS_ACCIDENT:
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_01: // 重大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_02: // 特大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_03: // 较大事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_04: // 一般事故
+ case V2XPoiTypeEnum.FOURS_ACCIDENT_05: // 轻微事故
str[0] = "你刚经过 #### \n有事故发生吗?";
str[1] = "你刚路过的路段有交通事故吗?您可以直接对我说有事故、或者没有事故。";
str[2] = R.drawable.v_to_x_event_ugc_shigu;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/LocationUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/LocationUtils.java
index fd2d26506d..6f6dbc047a 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/LocationUtils.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/LocationUtils.java
@@ -1,13 +1,12 @@
package com.mogo.module.v2x.utils;
import android.location.Location;
+import android.util.Log;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
-import com.mogo.map.search.geo.MogoGeocodeResult;
import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.map.search.geo.MogoRegeocodeResult;
import com.mogo.map.search.geo.query.MogoRegeocodeQuery;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
@@ -69,6 +68,11 @@ public class LocationUtils {
poiSearch.searchPOIAsyn();
}
+ /**
+ * 获取当前位置
+ *
+ * @return 当前位置
+ */
public static MogoLatLng getCurrentLatLon() {
MogoLatLng latLon = V2XServiceManager.getNavi().getCarLocation();
if (latLon == null) {
@@ -89,9 +93,9 @@ public class LocationUtils {
return latLon;
}
- /*
+ /**
* 计算两点间的角度
- * */
+ */
public static double getAngle(double lon1, double lat1, double lon2,
double lat2) {
double fLat = Math.PI * (lat1) / 180.0;
@@ -108,9 +112,9 @@ public class LocationUtils {
}
}
- /*
+ /**
* 根据角度获取指定距离点的经纬度
- * */
+ */
public static MogoLatLng getNewLocation(MogoLatLng st, double distance, double angle) {
mRadLo = st.getLon() * Math.PI / 180.;
mRadLa = st.getLat() * Math.PI / 180.;
@@ -124,4 +128,31 @@ public class LocationUtils {
return new MogoLatLng(lat_new, lon_new);
}
+
+ /**
+ * 获取传入的经纬度在车辆的什么位置
+ *
+ * @return 顺时针,true-前,false-后
+ */
+ public static boolean isPointOnCarFront(MogoLocation carLocal, MogoLatLng pointLocal) {
+ double carLon = carLocal.getLongitude();
+ double carLat = carLocal.getLatitude();
+ double poiLon = pointLocal.getLon();
+ double poiLat = pointLocal.getLat();
+ float carAngle = carLocal.getBearing();
+
+ // 计算车辆与点之间的夹角
+ int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi(
+ carLon, carLat, poiLon, poiLat, (int) carAngle);
+
+ if (diffAngle <= 90) {
+ Log.i(TAG, "目标点在车辆--前方");
+ return true;
+ } else {
+ Log.i(TAG, "目标点在车辆--后方");
+ return false;
+ }
+ }
+
+
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
index 33eafe8543..e47a234730 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
@@ -430,7 +430,7 @@ public class TestOnLineCarUtils {
try {
InputStream inputStream = V2XUtils.getApp()
.getResources()
- .openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi);
+ .openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi_1);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png
deleted file mode 100644
index be6da047d0..0000000000
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png and /dev/null differ
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json
index c4a47a5b64..c993011696 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json
@@ -34,6 +34,12 @@
],
[
116.424272,39.983397
+ ],
+ [
+ 116.425948,39.983465
+ ],
+ [
+ 116.42628,39.983399
]
],
"recommendPolyline": [
@@ -54,6 +60,12 @@
],
[
116.424272,39.983397
+ ],
+ [
+ 116.425948,39.983465
+ ],
+ [
+ 116.42628,39.983399
]
]
}
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi_1.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi_1.json
new file mode 100644
index 0000000000..1f41a45323
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi_1.json
@@ -0,0 +1,71 @@
+{
+ "sceneId": "200008",
+ "alarmContent": "拥堵路线推荐",
+ "expireTime": 10000,
+ "sceneCategory": 0,
+ "sceneDescription": "拥堵路线推荐",
+ "sceneName": "拥堵路线推荐",
+ "sceneLevel": 0,
+ "videoUrl": "",
+ "videoChannel": "",
+ "videoSn": "",
+ "tts": "发现前方拥堵,最优路线快6分钟",
+ "zoom": false,
+ "zoomScale": 15,
+ "userHead": "",
+ "msgImgUrl": "",
+ "lat":39.969088,
+ "lon":116.41808,
+ "polyline": [
+ [
+ 116.417388,39.983351
+ ],
+ [
+ 116.417351,39.9841
+ ],
+ [
+ 116.417286,39.985423
+ ],
+ [
+ 116.417233,39.98673
+ ],
+ [
+ 116.417179,39.988156
+ ],
+ [
+ 116.417158,39.988493
+ ],
+ [
+ 116.417142,39.989245
+ ],
+ [
+ 116.417174,39.990199
+ ]
+ ],
+ "recommendPolyline": [
+ [
+ 116.417388,39.983351
+ ],
+ [
+ 116.417351,39.9841
+ ],
+ [
+ 116.417286,39.985423
+ ],
+ [
+ 116.417233,39.98673
+ ],
+ [
+ 116.417179,39.988156
+ ],
+ [
+ 116.417158,39.988493
+ ],
+ [
+ 116.417142,39.989245
+ ],
+ [
+ 116.417174,39.990199
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
index 5963e668f3..62454570d9 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
@@ -20,9 +20,13 @@
"direction": 1,
"speed": 11.108121,
"targetColor": "#FF4040",
- "stopLineDistance": 15,
+ "stopLineDistance": 20,
"warningContent": "小心行人",
"heading": 0,
- "showTime": 3000,
- "roadwidth": 60.0
+ "showTime": 8000,
+ "roadwidth": 60.0,
+ "carLocation": {
+ "lat": 39.97665425,
+ "lon": 116.41769983
+ }
}
\ No newline at end of file