diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/OnlineCarDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/OnlineCarDrawer.java index 8418f23054..58f16cadd5 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/OnlineCarDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/OnlineCarDrawer.java @@ -13,6 +13,8 @@ import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerOnlineCar; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; import java.util.ArrayList; @@ -26,7 +28,7 @@ public * * 描述 */ -class OnlineCarDrawer { +class OnlineCarDrawer implements IMogoStatusChangedListener { private static final String TAG = "OnlineCarDrawer"; @@ -36,6 +38,9 @@ class OnlineCarDrawer { private static volatile OnlineCarDrawer sInstance; private OnlineCarDrawer() { + MogoApisHandler.getInstance().getApis() + .getStatusManagerApi() + .registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); } public static OnlineCarDrawer getInstance() { @@ -53,11 +58,6 @@ class OnlineCarDrawer { sInstance = null; } - private Object readResolve() { - // 阻止反序列化,必须实现 Serializable 接口 - return sInstance; - } - public void clearMarkers(){ MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( AbsMogoApplication.getApp() ).removeMarkers( ModuleNames.CARD_TYPE_USER_DATA ); } @@ -196,5 +196,8 @@ class OnlineCarDrawer { return false; } - + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + clearMarkers(); + } } 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 ba8ba13c89..0c3e3f2bb8 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 @@ -92,7 +92,6 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic mLastPositions.clear(); } AdasRecognizedResultDrawer.getInstance().notifyVrModeChanged(); //清除ADAS old marker data - OnlineCarDrawer.getInstance().clearMarkers(); //清除在线车辆 old marker data } public boolean isVrMode() { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index 71bbe6a00d..b0cc4aba36 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -1,14 +1,11 @@ package com.mogo.module.common.drawer; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.util.Log; import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.R; import com.mogo.module.common.drawer.marker.EmptyMarkerView; import com.mogo.module.common.drawer.marker.IMarkerView; import com.mogo.module.common.drawer.marker.MapMarkerAdapter; diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionView.java new file mode 100644 index 0000000000..2fae8cf660 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionView.java @@ -0,0 +1,42 @@ +package com.mogo.module.common.drawer.marker; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.widget.ImageView; + +import androidx.annotation.Nullable; + +import com.mogo.map.marker.MogoMarkerOptions; +import com.mogo.module.common.R; +import com.mogo.module.common.entity.MarkerShowEntity; + +/** + * author : 李小鹏 + * desc : 地图2dMarker 在3d下的展示 + * 前方碰撞 + */ +public class AheadCollisionView extends MapMarkerBaseView { + public AheadCollisionView(Context context) { + super(context); + } + + public AheadCollisionView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public AheadCollisionView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void initView(Context context) { + LayoutInflater.from(context).inflate(R.layout.module_common_warning_marker_front, this); + } + + @Override + public void updateView(MarkerShowEntity markerShowEntity) { + + } + +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionWindow3DAdapter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionWindow3DAdapter.java new file mode 100644 index 0000000000..5e0df863ca --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/AheadCollisionWindow3DAdapter.java @@ -0,0 +1,26 @@ +package com.mogo.module.common.drawer.marker; + +import android.content.Context; +import android.view.View; + +import com.mogo.map.marker.IMogoInfoWindowAdapter; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.MogoMarkerOptions; + +/** + * @author lixiaopeng + * @since 2021/4/15 + * 描述 前方碰撞预警marker + */ +public class AheadCollisionWindow3DAdapter implements IMogoInfoWindowAdapter { + private Context mContext; + + public AheadCollisionWindow3DAdapter(Context context) { + this.mContext = context; + } + + @Override + public View getInfoWindow(IMogoMarker marker) { + return new AheadCollisionView(mContext); + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java index 9d88d0b644..17a725095f 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapCameraInfoView.java @@ -24,10 +24,8 @@ import com.mogo.module.common.utils.CloudPoiManager; import com.mogo.utils.logger.Logger; /** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020-01-0619:55 - * desc : 地图Marker图标带文本信息 + * author : 李小鹏 + * desc : 地图2dMarker 在3d下的展示 * version: 1.0 */ public class MapCameraInfoView extends MapMarkerBaseView { diff --git a/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_front.xml b/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_front.xml new file mode 100644 index 0000000000..1bc7234fa3 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_front.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file 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 2f5c7607ea..2af69145b2 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 @@ -4,16 +4,27 @@ import android.content.Context; import android.util.Log; 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.module.common.MogoApisHandler; import com.mogo.module.common.drawer.AdasRecognizedResultDrawer; +import com.mogo.module.common.drawer.MarkerDrawer; +import com.mogo.module.common.drawer.marker.AheadCollisionView; +import com.mogo.module.common.drawer.marker.AheadCollisionWindow3DAdapter; +import com.mogo.module.common.drawer.marker.EmptyMarkerView; +import com.mogo.module.common.drawer.marker.SimpleWindow3DAdapter; +import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XWarningEntity; +import com.mogo.module.common.utils.Trigonometric; +import com.mogo.module.common.view.MarkerBaseFloor; import com.mogo.module.v2x.entity.model.DrawLineInfo; import com.mogo.module.v2x.listener.V2XWarnMessageListener; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.realtime.entity.ADASRecognizedResult; import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.ViewUtils; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.utils.GsonUtil; @@ -130,44 +141,41 @@ public class V2XWaringManager { //测试数据 testData(); - // 绘制连接线 -// 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); - - // adas 每隔一秒传递的他车或行人数据,避免重复 + // adas 每隔一秒传递的他车或行人数据,避免重复。 // V2XServiceManager.getmIMogoADASController().addAdasRecognizedDataCallback(resultList -> { -// // 绘制近景识别到的车辆,行人和二轮车 +// // 处理他车车身变色,这个可以使用 TODO // AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( resultList ); // -// //清理 -// V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); -// -// // 绘制连接线 -// DrawLineInfo info = new DrawLineInfo(); -// MogoLatLng startLatlng = new MogoLatLng(39.969247,116.407299); -// MogoLatLng endLatlng = new MogoLatLng(39.971089,116.407384); -// info.setStartLocation(startLatlng); -// info.setEndLocation(endLatlng); -// V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, info); -// -// //更新数据 -// for (ADASRecognizedResult result : resultList) { -// MogoLatLng latLng = new MogoLatLng(result.lat, result.lon); -// lonLats.add(latLng); -// } -// IMogoPolyline mMogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); -// mMogoPolyline.setPoints(lonLats); +// // adas自车定位,显示红色碰撞预警图,以及解除碰撞 +// double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); +// double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); +// //需要把自车的经纬度前移到车头,然后打点红色的marker // // } ); -// - //adas自车定位 -// MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient().getLastKnowLocation() -// double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); -// double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); + + } + + + /** + * 添加2d的碰撞 marker + * @param markerShowEntity + * @return + */ + private IMogoMarker drawMarker2dResource(MarkerShowEntity markerShowEntity) { + MogoLatLng mogoLatLng = new MogoLatLng(markerShowEntity.getMarkerLocation().getLat(), markerShowEntity.getMarkerLocation().getLon()); + MogoLatLng newLocation = Trigonometric.getNewLocation(mogoLatLng, 8, 180); + MogoMarkerOptions optionsRipple = new MogoMarkerOptions() + .latitude(newLocation.getLat()) + .longitude(newLocation.getLon()) + .anchor(1.0f, 1.0f) + .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); + optionsRipple + .icon(ViewUtils.fromView(new EmptyMarkerView(mContext))); + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerShowEntity.getMarkerType(), optionsRipple); + + marker.setInfoWindowAdapter(new AheadCollisionWindow3DAdapter(mContext)); + marker.showInfoWindow(); + return marker; } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java index f9ec08b008..ad3810f2ee 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java @@ -112,16 +112,7 @@ public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow { - //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); - //移出Window详细信息 - //移除窗体 - V2XServiceManager - .getMogoTopViewManager() - .removeViewNoLinkage(this); - }; + //Logger.d(MODULE_NAME, "V2X=== Window 30秒倒计时结束。。。"); + //移出Window详细信息 + runnableV2XEvent = this::close; } else { handlerV2XEvent.removeCallbacks(runnableV2XEvent); } @@ -155,4 +141,18 @@ public class V2XPushLiveCarWindow extends V2XBasWindow implements IV2XWindow