完成逆向超车场景

This commit is contained in:
董宏宇
2020-10-29 14:21:15 +08:00
parent 4ad23d97d2
commit 658f9abeab
4 changed files with 131 additions and 7 deletions

View File

@@ -156,19 +156,19 @@ public class V2XMarkerAdapter {
*/
public static Bitmap getV2XVRRoadEventViewPng(V2XPushMessageEntity alarmMessage) {
Bitmap bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
R.drawable.v2x_vr_ziche);
R.drawable.v_to_x_warning_car_orange);
switch (alarmMessage.getSceneId()) {
case "200001"://后方VIP车辆提示
bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
R.drawable.v2x_duixiang_laiche_che);
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200002"://前车急刹
break;
case "200003"://后方危险车辆预警
break;
case "200004"://逆向车辆路线预判
bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
R.drawable.v2x_duixiang_laiche_che);
// bitmap = ImageUtil.createBitmap(V2XUtils.getApp(),
// R.drawable.v2x_duixiang_laiche_che);
break;
case "200005"://VIP变灯通行
break;

View File

@@ -73,7 +73,7 @@ public class V2XPushVREventMarker implements IV2XMarker<V2XPushMessageEntity> {
colors.add(0xFFFA8C34);
// 线条粗细,渐变,渐变色值
options.width(10).useGradient(true).colorValues(colors);
options.width(15).useGradient(true).colorValues(colors);
for (double[] doubles : entity.getPolyline()) {
options.add(doubles[0], doubles[1]);

View File

@@ -35,7 +35,7 @@ public class V2XPushVREventScenario
synchronized (V2XPushVREventScenario.class) {
if (mV2XPushEventScenario == null) {
mV2XPushEventScenario = new V2XPushVREventScenario();
mV2XPushEventScenario.setV2XMarker(new V2XPushVREventMarker());
mV2XPushEventScenario.setV2XMarker(new V2XPushVRNiXiangEventMarker());
mV2XPushEventScenario.setV2XWindow(new V2XPushVREventWindow());
}
}

View File

@@ -0,0 +1,124 @@
package com.mogo.module.v2x.scenario.scene.pushVR;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
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.marker.V2XMarkerAdapter;
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;
import static com.mogo.module.v2x.V2XConst.V2X_EVENT_ALARM_POI;
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
* date : 2020/5/15 5:37 PM
* desc : 逆向来车
* version: 1.0
*/
public class V2XPushVRNiXiangEventMarker implements IV2XMarker<V2XPushMessageEntity> {
private final String TAG = "V2XPushVREventMarker";
private static IMogoPolyline mMogoPolyline;
private static IMogoMarker mAlarmInfoMarker;
@Override
public void drawPOI(V2XPushMessageEntity entity) {
Logger.w(V2XConst.MODULE_NAME + "_" + TAG, "drawPOI 绘制VR Marker");
try {
// 清除道路事件
V2XServiceManager
.getMoGoV2XMarkerManager().clearALLPOI();
if (mMogoPolyline != null) {
mMogoPolyline.remove();
}
// 道路事件
MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
.object(entity)
.latitude(entity.getLat())
.longitude(entity.getLon());
optionsRipple.anchor(0.5f, 0.5f);
optionsRipple.icon(V2XMarkerAdapter.getV2XVRRoadEventViewPng(entity));
mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
List<MogoLatLng> points = new ArrayList<>();
for (double[] doubles : entity.getMoveTrack()) {
points.add(new MogoLatLng(doubles[1], doubles[0]));
}
mAlarmInfoMarker.startSmooth(points, 10);
// 绘制引导线
drawablePloyLine(entity);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 绘制引导线
*
* @param entity
*/
void drawablePloyLine(V2XPushMessageEntity entity) {
// 连接线参数
MogoPolylineOptions options = new MogoPolylineOptions();
// 渐变色
List<Integer> colors = new ArrayList<>();
colors.add(0xFFFA8C34);
colors.add(0xFFBD6D36);
colors.add(0xFFFA8C34);
// 线条粗细,渐变,渐变色值
options.width(15).useGradient(true).colorValues(colors);
for (double[] doubles : entity.getPolyline()) {
options.add(doubles[0], doubles[1]);
}
// 绘制线的对象
mMogoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(options);
}
@Override
public void clearPOI() {
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
MarkerUtils.resetMapZoom(16);
// 移除线
clearLine();
// 移除事件POI
clearAlarmPOI();
// 绘制上次的数据
V2XServiceManager.getMoGoV2XMarkerManager().drawableLastAllPOI();
}
void clearAlarmPOI() {
if (mAlarmInfoMarker != null) {
mAlarmInfoMarker.remove();
}
}
public void clearLine() {
if (mMogoPolyline != null) {
mMogoPolyline.remove();
mMogoPolyline = null;
V2XServiceManager.getV2XStatusManager().setAlarmInfo(null);
}
}
}