From 339d74c29c30e65e466092bcededc8dde81ecd6b Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 24 Jun 2021 14:54:34 +0800 Subject: [PATCH] add drawline --- .../module/adas/AdasAutoPilotManager.java | 33 +++++++-- .../adas/overlay/LineOverlayManager.java | 71 +++++++++++++++++++ 2 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/overlay/LineOverlayManager.java diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java index 3b514e9f5e..fba1736b95 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java @@ -6,9 +6,11 @@ import android.os.Handler; import android.os.Message; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.adas.entity.AdasAutoPilotLocReceiverBean; import com.mogo.module.adas.model.AdasServiceModel; +import com.mogo.module.adas.overlay.LineOverlayManager; import com.mogo.module.adas.view.DispatchRemindDialog; import com.mogo.module.common.MogoApisHandler; import com.mogo.service.connection.IMogoOnMessageListener; @@ -34,10 +36,13 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener latLngList = new ArrayList<>(); + for (AutopilotRoute.RouteModels routeModel : autopilotRoute.getModels()) { + latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon())); + } + lineOverlayManager.draw(mogoLocation, latLngList); } @Override @@ -151,12 +162,22 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener mPolylinePointList; + // 渐变色 + private List mPolylineColors; + + IMogoOverlayManager mogoOverlayManager; + + private Context mContext; + + public LineOverlayManager(Context context) { + mPolylineOptions = new MogoPolylineOptions(); + // 绘制路径集合 + mPolylinePointList = new ArrayList<>(); + // 引导线颜色 + mPolylineColors = new ArrayList<>(); + mContext = context; + mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext); + } + + /** + * 绘制最优路线 + * + * @param polylinePoint 要绘制的经纬度度集合 + */ + public void draw(MogoLocation carLocal, List polylinePoint) { + if (mMoGoPolyline != null) { + mMoGoPolyline.remove(); + mPolylinePointList.clear(); + mPolylineColors.clear(); + } + if (polylinePoint != null) { + // 将当前车辆位置放进去 + mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude())); + // 过滤后台推送的推荐路线集合 + for (MogoLatLng polyline : polylinePoint) { + //需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃 + if (LocationUtils.isPointOnCarFront(carLocal, polyline)) { + mPolylinePointList.add(polyline); + } + } + mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size())); + // 替换路径集合 + mPolylineOptions.points(mPolylinePointList); + // 线条粗细,渐变,渐变色值 + mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors); + // 绘制线 + mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions); + } + } +}