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