From 658f9abeab8962d51996cd6371b701af13819b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 29 Oct 2020 14:21:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=80=86=E5=90=91=E8=B6=85?= =?UTF-8?q?=E8=BD=A6=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/v2x/marker/V2XMarkerAdapter.java | 10 +- .../scene/pushVR/V2XPushVREventMarker.java | 2 +- .../scene/pushVR/V2XPushVREventScenario.java | 2 +- .../pushVR/V2XPushVRNiXiangEventMarker.java | 124 ++++++++++++++++++ 4 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVRNiXiangEventMarker.java diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java index 443a466bed..5e208d2a57 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java @@ -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; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventMarker.java index 3ab9a28af0..71bc5e93be 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventMarker.java @@ -73,7 +73,7 @@ public class V2XPushVREventMarker implements IV2XMarker { 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]); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventScenario.java index 17f63180d6..73bda859aa 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVREventScenario.java @@ -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()); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVRNiXiangEventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVRNiXiangEventMarker.java new file mode 100644 index 0000000000..6a6529c870 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/pushVR/V2XPushVRNiXiangEventMarker.java @@ -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 { + 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 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 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); + } + } +}