diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 0403a802d6..3998d96c9b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -114,6 +114,8 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 Log.e(TAG, "routeResult:" + latLngList.size()); RouteOverlayDrawer.getInstance(mContext).putRouteList(latLngList); + int listSize = latLngList.size(); + RouteOverlayDrawer.getInstance(mContext).addEndingMarker(latLngList.get(listSize - 1).lat,latLngList.get(listSize - 1).lon); } @Override @@ -121,6 +123,7 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 this.STATUS_AUTOPILOT = autoPilotStatusInfo.getControl_pilotmode(); if (STATUS_AUTOPILOT != 1) { RouteOverlayDrawer.getInstance(mContext).clearMogoRouteOverlay(); + RouteOverlayDrawer.getInstance(mContext).clearEndingMarker(); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java index 1f5d76e376..465568672a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java @@ -1,14 +1,19 @@ package com.mogo.module.service.routeoverlay; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.overlay.IMogoOverlayManager; import com.mogo.map.overlay.IMogoPolyline; import com.mogo.map.overlay.MogoPolylineOptions; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.utils.LocationUtils; +import com.mogo.module.service.R; import com.mogo.utils.ColorUtils; import java.util.ArrayList; @@ -25,19 +30,24 @@ public class RouteOverlayDrawer { private List mPolylineColors; private Context mContext; IMogoOverlayManager mogoOverlayManager; - + private IMogoMarker endMarker; + private MogoMarkerOptions markderOptions; + private Bitmap endingBitmap; private static volatile RouteOverlayDrawer sInstance; - + private static final String markerType = "route_ending"; private RouteOverlayDrawer(Context context) { mPolylineOptions = new MogoPolylineOptions(); mPolylineOptions.zIndex(20000f); mPolylineOptions.setGps(true); // 绘制路径集合 mPolylinePointList = new ArrayList<>(); - // 引导线颜色 + // 引导线颜色, mPolylineColors = new ArrayList<>(); mContext = context; mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext); + endingBitmap = BitmapFactory.decodeResource(context.getResources(), + R.drawable.icon_route_ending); + } public static RouteOverlayDrawer getInstance(Context context) { @@ -113,6 +123,20 @@ public class RouteOverlayDrawer { return mMoGoPolyline; } + public void addEndingMarker(double lat,double lon){ + if (markderOptions == null){ + markderOptions = new MogoMarkerOptions(). + set3DMode(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) + .matchOnRoadSide(true) + .icon(endingBitmap) + .owner(markerType) + .zIndex(20001); +// .object(markerShowEntity) + } + markderOptions.latitude(lat).longitude(lon); + endMarker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerType, markderOptions); + } + public void clearMogoRouteOverlay(){ if (mMoGoPolyline != null) { mMoGoPolyline.remove(); @@ -122,6 +146,12 @@ public class RouteOverlayDrawer { } } + public void clearEndingMarker(){ + if (endMarker != null){ + endMarker.setVisible(false); + } + } + public void putRouteList(List routeList) { this.mRouteList = routeList; } @@ -134,10 +164,10 @@ public class RouteOverlayDrawer { mPolylinePointList.add(latLng); } if (mPolylineColors.isEmpty()){ - mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size())); + mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#2AAFFD", mPolylinePointList.size())); } // 线条粗细,渐变,渐变色值 - mPolylineOptions.width(14).useGradient(true).colorValues(mPolylineColors); + mPolylineOptions.width(12).useGradient(true).colorValues(mPolylineColors); if (mMoGoPolyline == null || mMoGoPolyline.isDestroyed()){ mPolylineOptions.points(mPolylinePointList); mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions); diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi-1920x1000/icon_route_ending.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi-1920x1000/icon_route_ending.png new file mode 100644 index 0000000000..5c254f5d35 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi-1920x1000/icon_route_ending.png differ