From 3ae3fca09d8d3a9fd58fe331387ae5bb0fc144b4 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 13 Apr 2021 17:18:54 +0800 Subject: [PATCH 1/4] opt --- .idea/gradle.xml | 1 + .../impl/MoGoV2XCloundDataManager.java | 28 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 83405b8de1..4ff10f68a5 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -91,6 +91,7 @@ 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 6e4b115c29..4ba2230b01 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 @@ -71,7 +71,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog drawStopLine(cloundWarningInfo, newLocation); //添加停止线marker handleStopLine(); - }, 800); + }, 600); UiThreadHandler.postDelayed(() -> { V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); @@ -99,15 +99,17 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog private void handleStopLine() { - for (int i = 0; i < fillPoints.size(); i++) { - V2XWarningEntity entity = new V2XWarningEntity(); - MogoLatLng latLng = (MogoLatLng) fillPoints.get(i); - entity.setLat(latLng.lat); - entity.setLon(latLng.lon); - entity.setCollisionLat(mCloundWarningInfo.getCollisionLat()); - entity.setCollisionLon(mCloundWarningInfo.getCollisionLon()); - entity.heading = mCloundWarningInfo.heading; - V2XWarnDataDrawer.getInstance().renderStopLineData(entity); + if (mCloundWarningInfo != null) { + for (int i = 0; i < fillPoints.size(); i++) { + V2XWarningEntity entity = new V2XWarningEntity(); + MogoLatLng latLng = (MogoLatLng) fillPoints.get(i); + entity.setLat(latLng.lat); + entity.setLon(latLng.lon); + entity.setCollisionLat(mCloundWarningInfo.getCollisionLat()); + entity.setCollisionLon(mCloundWarningInfo.getCollisionLon()); + entity.heading = mCloundWarningInfo.heading; + V2XWarnDataDrawer.getInstance().renderStopLineData(entity); + } } } @@ -140,7 +142,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } } else { - Log.e(V2XConst.LOG_NAME_WARN, "drawStopLine info == null"); V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); } } @@ -191,7 +192,9 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog public void onCarLocationChanged2(Location latLng) { // Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); //当行人经纬度交点 开始画线,否则清理 - mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); + if (mCloundWarningInfo != null) { + mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); + } drawSlefCarLine(latLng); } @@ -237,7 +240,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); } } else { - Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mCloundWarningInfo == null"); V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); } } From 23b4c5c51b6756fcf849873fc90819a9528619e9 Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 13 Apr 2021 17:26:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[add]=E8=AF=86=E5=88=AB=E7=89=A9=E5=BA=95?= =?UTF-8?q?=E5=B1=82=E7=BA=A2=E8=89=B2=E8=92=99=E5=B1=822D=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E7=BB=98=E5=88=B6marker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/drawer/V2XWarnDataDrawer.java | 34 ++++++++++++++- .../module/common/view/MarkerBaseFloor.java | 40 ++++++++++++++++++ .../common_marker_bottom_floor.png | Bin 0 -> 5175 bytes .../module_common_warning_marker_bottom.xml | 13 ++++++ .../impl/MoGoV2XCloundDataManager.java | 25 +++++------ .../scene/warning/V2XWarningMarker.java | 2 +- 6 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/view/MarkerBaseFloor.java create mode 100644 modules/mogo-module-common/src/main/res/drawable-xhdpi/common_marker_bottom_floor.png create mode 100644 modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_bottom.xml 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 0eba5d780f..b6f0ed0894 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,19 +1,26 @@ 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; +import com.mogo.module.common.drawer.marker.SimpleWindow3DAdapter; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.common.entity.V2XWarningEntity; +import com.mogo.module.common.view.MarkerBaseFloor; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.ViewUtils; import com.mogo.utils.logger.Logger; import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_LINE_DATA; @@ -78,15 +85,21 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL markerShowEntity.setMarkerLocation(location); markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); + IMogoMarker bottomMarker = drawMarkerWith2Resource(markerShowEntity); IMogoMarker marker = drawMarker(markerShowEntity); Log.d("liyz", "renderWarnData marker != null direction = " + data.getDirection()); + //识别物 marker.addDynamicAnchorPosition(new MogoLatLng( data.getDirection() == 1 ? data.getStopLines().get(1).lat : data.getCollisionLat(), data.getDirection() == 1 ? data.getStopLines().get(1).lon : data.getCollisionLon()), (float) data.getHeading(), 5000); - + //识别物下方的红色圆圈 + bottomMarker.addDynamicAnchorPosition(new MogoLatLng( + data.getDirection() == 1 ? data.getStopLines().get(1).lat : data.getCollisionLat(), + data.getDirection() == 1 ? data.getStopLines().get(1).lon : data.getCollisionLon()), (float) data.getHeading(), 5000); //移动完成以后,3s后消失 UiThreadHandler.postDelayed(() -> { marker.remove(); + bottomMarker.remove(); }, 8000); } @@ -108,6 +121,25 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL return marker; } + /* + * 2D资源绘制marker + * */ + private IMogoMarker drawMarkerWith2Resource(MarkerShowEntity markerShowEntity) { + MogoMarkerOptions optionsRipple = new MogoMarkerOptions() + .latitude(markerShowEntity.getMarkerLocation().getLat()) + .longitude(markerShowEntity.getMarkerLocation().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 SimpleWindow3DAdapter(new MarkerBaseFloor(mContext))); + marker.showInfoWindow(); + return marker; + } + /** * 绘制停止线 marker * diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/view/MarkerBaseFloor.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/view/MarkerBaseFloor.java new file mode 100644 index 0000000000..d42b79ebce --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/view/MarkerBaseFloor.java @@ -0,0 +1,40 @@ +package com.mogo.module.common.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; + +import androidx.annotation.Nullable; + +import com.mogo.module.common.R; +import com.mogo.module.common.drawer.marker.MapMarkerBaseView; +import com.mogo.module.common.entity.MarkerShowEntity; + +/** + * @author liujing + * @description 描述 + * @since: 2021/4/13 + */ +public class MarkerBaseFloor extends MapMarkerBaseView { + public MarkerBaseFloor(Context context) { + super(context); + } + + public MarkerBaseFloor(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public MarkerBaseFloor(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_bottom, this ); + } + + @Override + public void updateView(MarkerShowEntity markerShowEntity) { + + } +} diff --git a/modules/mogo-module-common/src/main/res/drawable-xhdpi/common_marker_bottom_floor.png b/modules/mogo-module-common/src/main/res/drawable-xhdpi/common_marker_bottom_floor.png new file mode 100644 index 0000000000000000000000000000000000000000..a46f85caffa89343c1a9787292e98c5da46e4385 GIT binary patch literal 5175 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 lXoP`x8-?8GZQgPE{{tSJS>}+i + + + + + \ No newline at end of file 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 4ba2230b01..4bddb2a20b 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 @@ -117,14 +117,14 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog * 绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置 */ private void drawStopLine(V2XWarningEntity info, MogoLatLng mogoLatLng) { - IMogoPolyline polyLine = V2XServiceManager.getMoGoStopPolylineManager().getMogoStopPolyline(); - MogoLatLng startLatlng = new MogoLatLng(carLocation.lat, carLocation.lon); - MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon); - Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine endLatlng lon =" + endLatlng.lon + "--lat =" + endLatlng.lat - + "--startLatlng lon = " + startLatlng.lon + "-lat = " + startLatlng.lat); - float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); - MogoLatLng addMiddleLoc = LocationUtils.getNewLocation(startLatlng, distance / 2, mCloundWarningInfo.getAngle()); if (info != null) { + IMogoPolyline polyLine = V2XServiceManager.getMoGoStopPolylineManager().getMogoStopPolyline(); + MogoLatLng startLatlng = new MogoLatLng(carLocation.lat, carLocation.lon); + MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon); + Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine endLatlng lon =" + endLatlng.lon + "--lat =" + endLatlng.lat + + "--startLatlng lon = " + startLatlng.lon + "-lat = " + startLatlng.lat); + float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); + MogoLatLng addMiddleLoc = LocationUtils.getNewLocation(startLatlng, distance / 2, mCloundWarningInfo.getAngle()); if (polyLine != null) { Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null"); polyLine.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); @@ -151,12 +151,12 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog * 目标物与预碰撞点连线,并且更新数据 TODO 需要实时给行人当前位置 */ private void drawOtherObjectLine(V2XWarningEntity info) { - IMogoPolyline polyLine = V2XServiceManager.getMoGoPersonWarnPolylineManager().getMogoPersonWarnPolyline(); - MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon()); - MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()); - float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); - MogoLatLng addMiddleLoc = LocationUtils.getNewLocation(startLatlng, distance / 2, mCloundWarningInfo.getAngle()); if (info != null) { + IMogoPolyline polyLine = V2XServiceManager.getMoGoPersonWarnPolylineManager().getMogoPersonWarnPolyline(); + MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon()); + MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()); + float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat); + MogoLatLng addMiddleLoc = LocationUtils.getNewLocation(startLatlng, distance / 2, mCloundWarningInfo.getAngle()); if (polyLine != null) { Log.d(V2XConst.LOG_NAME_WARN, "polyLine != null"); polyLine.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); @@ -195,6 +195,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog if (mCloundWarningInfo != null) { mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); } + carLocation = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); drawSlefCarLine(latLng); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index d7f2bdbba2..75bb3d4554 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java @@ -100,7 +100,7 @@ public class V2XWarningMarker implements IV2XMarker { } //自车行驶方向的前方*米的经纬度,该经纬度在停止线上 MogoLatLng drawStopLineLon = LocationUtils.getNewLocation(carlo, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle()); - Log.d(TAG, "2D资源绘制停止线" + drawStopLineLon); + Log.d(TAG, "2D资源绘" + drawStopLineLon); MogoMarkerOptions optionsRipple = new MogoMarkerOptions() .latitude(drawStopLineLon.getLat()) .longitude(drawStopLineLon.getLon()) From 6fb89a2265fc9a62b3596e850c389eff41d0c091 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 13 Apr 2021 17:30:45 +0800 Subject: [PATCH 3/4] add vr judge --- .../impl/MoGoV2XCloundDataManager.java | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) 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 4ba2230b01..db6f53c4d2 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 @@ -51,49 +51,51 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog @Override public void analysisV2XCloundDataEvent(V2XWarningEntity cloundWarningInfo) { - Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> "); - mCloundWarningInfo = cloundWarningInfo; - showTime = mCloundWarningInfo.getShowTime(); - pointsBetween(); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> "); + mCloundWarningInfo = cloundWarningInfo; + showTime = mCloundWarningInfo.getShowTime(); + pointsBetween(); - //预警蒙层 - MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getType(), MogoReceiver.ACTION_V2X_FRONT_WARNING); - isSelfLineClear = false; - isFirstLocation = false; + //预警蒙层 + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getType(), MogoReceiver.ACTION_V2X_FRONT_WARNING); + isSelfLineClear = false; + isFirstLocation = false; - if (cloundWarningInfo.getDirection() == 1) { //前方 - MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle()); - //停止线前方画线 - WorkThreadHandler.getInstance().postDelayed(() -> { - //二轮车和行人的渲染和移动 - V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); - //绘制识别物与交汇点连线,并且更新连线数据 - drawStopLine(cloundWarningInfo, newLocation); - //添加停止线marker - handleStopLine(); - }, 600); + if (cloundWarningInfo.getDirection() == 1) { //前方 + MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle()); + //停止线前方画线 + WorkThreadHandler.getInstance().postDelayed(() -> { + //二轮车和行人的渲染和移动 + V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + //绘制识别物与交汇点连线,并且更新连线数据 + drawStopLine(cloundWarningInfo, newLocation); + //添加停止线marker + handleStopLine(); + }, 500); - UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoStopPolylineManager().clearLine(); - isSelfLineClear = true; - }, showTime); + UiThreadHandler.postDelayed(() -> { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoStopPolylineManager().clearLine(); + isSelfLineClear = true; + }, showTime); - } else { //左侧或者右侧 - WorkThreadHandler.getInstance().postDelayed(() -> { - //绘制识别物与交汇点连线,并且更新连线数据 - drawOtherObjectLine(cloundWarningInfo); - //二轮车和行人的渲染和移动 - V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); - }, 500); + } else { //左侧或者右侧 + WorkThreadHandler.getInstance().postDelayed(() -> { + //绘制识别物与交汇点连线,并且更新连线数据 + drawOtherObjectLine(cloundWarningInfo); + //二轮车和行人的渲染和移动 + V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + }, 500); - //延迟3秒清理线 - UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - isSelfLineClear = true; - }, showTime); + //延迟3秒清理线 + UiThreadHandler.postDelayed(() -> { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + isSelfLineClear = true; + }, showTime); + } } } @@ -191,11 +193,13 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog @Override public void onCarLocationChanged2(Location latLng) { // Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); - //当行人经纬度交点 开始画线,否则清理 - if (mCloundWarningInfo != null) { - mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + //当行人经纬度交点 开始画线,否则清理 + if (mCloundWarningInfo != null) { + mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude())); + } + drawSlefCarLine(latLng); } - drawSlefCarLine(latLng); } @Override From 780c38452c1d67a3cd8677b8b04815465f5a3c2b Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 13 Apr 2021 17:42:46 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=AF=86=E5=88=AB=E7=89=A9=E5=BA=95?= =?UTF-8?q?=E9=83=A8=E7=BA=A2=E8=89=B2=E8=92=99=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/module_common_warning_marker_bottom.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_bottom.xml b/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_bottom.xml index b4ded08385..1ec9b2b6ab 100644 --- a/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_bottom.xml +++ b/modules/mogo-module-common/src/main/res/layout/module_common_warning_marker_bottom.xml @@ -4,10 +4,9 @@ android:layout_height="match_parent"> \ No newline at end of file