diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java index bce9c3fdc7..07dfb1fbb2 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java @@ -18,6 +18,11 @@ class DataTypes { */ public static final String TYPE_MARKER_CLOUD_DATA = "TYPE_MARKER_CLOUD_DATA"; + /** + * 云端下发数据 + */ + public static final String TYPE_MARKER_CLOUD_WARN_DATA = "TYPE_MARKER_CLOUD_WARN_DATA"; + /** * Push 事件场景 VR */ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 9834fa2002..305520801b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -143,43 +143,39 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param data 道路数据 * @return {@link IMogoMarker} */ -// public IMogoMarker drawWarnDataMarker( V2XWarningEntity data ) { -// if ( data == null ) { -// return null; -// } -// -// MogoMarkerOptions options = new MogoMarkerOptions() -// .owner( DataTypes.TYPE_MARKER_CLOUD_DATA ) -// .anchor( 0.5f, 0.5f ) -// .rotate( ( float ) data.getHeading() ) -// .object( data ) -// .gps( true ) -// .controlAngle( true ) -// .position( new MogoLatLng( data.getWgslat(), data.getWgslon() ) ); -// String resIdVal = null; -// if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { -// options.set3DMode( true ); -// // TODO: 2021/3/23 后端算法提供显示颜色 -// options.anchorColor( getModelRenderColor( data.getType(), data.getSpeed(), data.getWgslon(), data.getWgslat(), data.getHeading() ) ); -// int resId = getModelRes( data.getType() ); -// resIdVal = resId + ""; + public IMogoMarker drawWarnDataMarker( V2XWarningEntity data ) { + if ( data == null ) { + return null; + } + + MogoMarkerOptions options = new MogoMarkerOptions() + .owner( DataTypes.TYPE_MARKER_CLOUD_DATA ) + .anchor( 0.5f, 0.5f ) + .rotate( ( float ) data.getHeading() ) + .object( data ) + .gps( true ) + .controlAngle( true ) + .position( new MogoLatLng( data.getLat(), data.getLon())); + + String resIdVal = null; + if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + options.set3DMode( true ); + options.anchorColor(data.color); + int resId = getModelRes( data.getType() ); + resIdVal = resId + ""; // options.resName( mMarkerCachesResMd5Values.get( resIdVal ) ); -// options.icon3DRes( resId ); -// } else { + options.icon3DRes( resId ); + } else { // options.set3DMode( false ); // View view = inflateView( data ); // options.icon( view ); // resIdVal = view.getId() + ""; -// } -// IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options ); + } + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options ); // cacheMarkerIconResMd5Val( resIdVal, marker ); -// -// if ( !TextUtils.isEmpty( data.getSn() ) ) { -// bindClickListener( marker ); -// } -// -// return marker; -// } + + return marker; + } /** @@ -187,17 +183,14 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param data */ // public void renderWarnData(V2XWarningEntity data ) { -// // IMogoMarker marker = drawWarnDataMarker(data); // // if ( marker == null ) { // continue; // } // -// // renderSnapshotOneFrame( marker, uniqueKey, cloudRoadData, newMarkersCaches ); // -// // } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java index f6178c986d..2e3dd68156 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java @@ -303,7 +303,6 @@ public class V2XModuleProvider implements V2XServiceManager.getV2XMarkerService().startAutoRefresh(); // 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随 V2XServiceManager.getMapUIController().recoverLockMode(); - Log.d(V2XConst.LOG_NAME_WARN, "V2XModuleProvider ------> "); //注册adas数据通道 V2XWaringManager.getInstance().registerAdasSocketMessage(mContext); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java index 2dc4c068fe..d7247e54cc 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java @@ -56,7 +56,7 @@ public class V2XWaringManager { //根据云端,绘制自车和交点,以及行人或二轮车与交点的绘制 registerWarnListener(); - handleAdasData(); +// handleAdasData(); } /** @@ -92,26 +92,35 @@ public class V2XWaringManager { /** * 处理adas返回的数据 */ - private void handleAdasData() { - Log.d(V2XConst.LOG_NAME_WARN, "V2XWaringManager ---- handleAdasData "); + public void handleAdasData() { + Logger.d(V2XConst.LOG_NAME_WARN, "V2XWaringManager ---- handleAdasData "); - // 绘制连接线 TODO 来的是列表数据 + // 绘制连接线 DrawLineInfo info1 = new DrawLineInfo(); MogoLatLng startLatlng1 = new MogoLatLng(39.968919,116.407642); MogoLatLng endLatlng1 = new MogoLatLng(40.010906,116.423821); + info1.setHeading(10); info1.setStartLocation(startLatlng1); info1.setEndLocation(endLatlng1); + +// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { +// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(116.411194781192, +// 39.9808395231999, 10, true, true); +// Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth); +// info1.setWidth(roadWidth); +// } + V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info1); // adas 每隔一秒传递的他车或行人数据 V2XServiceManager.getmIMogoADASController().addAdasRecognizedDataCallback(resultList -> { - // 绘制近景识别到的车辆,行人和二轮车 TODO + // 绘制近景识别到的车辆,行人和二轮车 AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( resultList ); //清理 V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - // 绘制连接线 TODO 来的是列表数据 + // 绘制连接线 DrawLineInfo info = new DrawLineInfo(); MogoLatLng startLatlng = new MogoLatLng(39.969247,116.407299); MogoLatLng endLatlng = new MogoLatLng(39.971089,116.407384); @@ -133,15 +142,6 @@ public class V2XWaringManager { double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); Log.d(V2XConst.LOG_NAME_WARN, "lon = " + lon + "----lat = " + lat); - //绘制自车数据 liyz -// DrawLineInfo info = new DrawLineInfo(); -// MogoLatLng startLatlng = new MogoLatLng(lat,lon); //我的位置 -// MogoLatLng endLatlng = new MogoLatLng(39.971089,); //交点位置 -// info.setStartLocation(startLatlng); -// info.setEndLocation(endLatlng); -// V2XServiceManager.getMoGoWarnPolylineManager().drawableWarnPolyline(mContext, info); - - } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java index d18ba99ee7..e6a68b6331 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java @@ -20,6 +20,8 @@ public class DrawLineInfo { private double heading; + private float width; + public String getType() { return type; } @@ -51,4 +53,12 @@ public class DrawLineInfo { public void setHeading(double heading) { this.heading = heading; } + + public float getWidth() { + return width; + } + + public void setWidth(float width) { + this.width = width; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java index 19c96ecc65..43e5a4eb06 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java @@ -25,6 +25,10 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan @Override public void drawPersonWarnPolyline(Context context, DrawLineInfo info) { + if (info == null) { + return; + } + try { if (mMogoPolyline != null) { mMogoPolyline.remove(); @@ -33,24 +37,26 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan // 连接线参数 MogoPolylineOptions options = new MogoPolylineOptions(); - float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getStartLocation().lon, - info.getStartLocation().lat, (float) info.getHeading(), true, true); - // 渐变色 List colors = new ArrayList<>(); - if (info.getType().equals("1")) { //预警 TODO - colors.add(0xFFFFA31A); - colors.add(0xFFFFA31A); + if (info.getType() != null) { + if (info.getType().equals("1")) { //预警 TODO + colors.add(0xFFFFA31A); + colors.add(0xFFFFA31A); + } else { + colors.add(0xFFE32F46); + colors.add(0xFFE32F46); + } } else { colors.add(0xFFE32F46); colors.add(0xFFE32F46); } // 线条粗细,渐变,渐变色值 - Log.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager roadWidth = " + roadWidth); - options.width(roadWidth).useGradient(true).colorValues(colors); -// options.width(60).useGradient(true).colorValues(colors); +// Logger.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager roadWidth = " + roadWidth); + options.width(60).useGradient(true).colorValues(colors); +// options.width(info.getWidth()).useGradient(true).colorValues(colors); // 当前车辆位置 options.add(info.getStartLocation()); // 目标车辆位置 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 420e8da55e..ebd2cbacb5 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 @@ -8,6 +8,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.overlay.IMogoPolyline; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.drawer.SnapshotSetDataDrawer; import com.mogo.module.common.entity.V2XWarningEntity; import com.mogo.module.v2x.MoGoV2XServicePaths; @@ -29,7 +30,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog @Override public void init(Context context) { - } @Override @@ -42,7 +42,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog drawOtherObjectLine(cloundWarningInfo); //二轮车和行人的移动和渲染 -// SnapshotSetDataDrawer.getInstance().renderSnapshotData(); +// SnapshotSetDataDrawer.getInstance().renderWarnData(cloundWarningInfo); } @@ -64,6 +64,14 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog lineInfo.setStartLocation(startLatlng); lineInfo.setEndLocation(endLatlng); lineInfo.setHeading(info.heading); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { +// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(116.411194781192, +// 39.9808395231999, 10, true, true); + float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getLon(), + info.getLat(), (float) info.heading, true, true); + Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth); + lineInfo.setWidth(roadWidth); + } V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo); } } else { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java index 07cf944aee..9752a13441 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java @@ -38,12 +38,11 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { mMogoPolyline.remove(); } + Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager --------> "); + // 连接线参数 MogoPolylineOptions options = new MogoPolylineOptions(); -// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getStartLocation().lon, -// info.getStartLocation().lat, (float) info.getHeading(), true, true); - List colors = new ArrayList<>(); if (info.getType() != null) { @@ -63,7 +62,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { // Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + roadWidth); // 线条粗细,渐变,渐变色值 options.width(60).useGradient(true).colorValues(colors); -// options.width(roadWidth).useGradient(true).colorValues(colors); +// options.width(info.getWidth()).useGradient(true).colorValues(colors); // 当前车辆位置 options.add(info.getStartLocation()); // 目标车辆位置 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java index 62905c22a0..2939319bae 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java @@ -23,7 +23,10 @@ public class AdasDataBroadcastReceiver extends BroadcastReceiver { // Logger.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -->" + GsonUtil.jsonFromObject(adasResult)); String adasResult = (String) intent.getSerializableExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY); Log.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -----> "); - V2XWaringManager.getInstance().registerAdasSocketMessage(context); +// V2XWaringManager.getInstance().registerAdasSocketMessage(context); + V2XWaringManager.getInstance().handleAdasData(); + + } catch (Exception e) { e.printStackTrace();