diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java index 7aee133556..b69405e105 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java @@ -69,14 +69,11 @@ import java.util.List; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - /** * 小地图的方向View * 监听自动驾驶路径结束,结束高德地图导航 * * @author donghongyu - * @date 12/14/20 4:40 PM */ public class AMapCustomView extends RelativeLayout @@ -87,12 +84,6 @@ public class AMapCustomView private AMap mAMap; protected NaviLatLng mStartLatlng = new NaviLatLng(); protected NaviLatLng mEndLatlng = new NaviLatLng(); - //328路线测试数据 -// protected NaviLatLng mStartLatlng = new NaviLatLng(39.969111, 116.411903); -// protected NaviLatLng mEndLatlng = new NaviLatLng(40.037209, 116.314358); - //顺义国展测试数据 -// mStartLatlng = new NaviLatLng(40.09383,116.51899); -// mEndLatlng = new NaviLatLng(40.09964,116.54570); protected final List sList = new ArrayList(); protected final List eList = new ArrayList(); private int zoomLevel = 15; @@ -125,42 +116,89 @@ public class AMapCustomView private void initView(Context context) { mContext = context; - //测试代码:路线指定路径328线路 -// mWayPointList.add(new NaviLatLng(39.968847, 116.406952)); -// mWayPointList.add(new NaviLatLng(39.969058, 116.407346)); -// mWayPointList.add(new NaviLatLng(39.968955, 116.401767)); -// mWayPointList.add(new NaviLatLng(39.968626, 116.394938)); -// mWayPointList.add(new NaviLatLng(39.968433, 116.388725)); -// mWayPointList.add(new NaviLatLng(39.968542, 116.383775)); -// mWayPointList.add(new NaviLatLng(40.037808, 116.342539)); -// mWayPointList.add(new NaviLatLng(40.037239, 116.337172)); -// mWayPointList.add(new NaviLatLng(40.035897, 116.329582)); -// mWayPointList.add(new NaviLatLng(40.036396, 116.322166)); - Log.d(TAG, "initView:" + mWayPointList.toString()); - - //顺义国展路线 -// mWayPointList.add(new NaviLatLng(40.097621,116.526495)); -// mWayPointList.add(new NaviLatLng(40.097982,116.529135)); -// mWayPointList.add(new NaviLatLng(40.098434,116.531903)); -// mWayPointList.add(new NaviLatLng(40.098828,116.534563)); -// mWayPointList.add(new NaviLatLng(40.099377,116.538651)); -// mWayPointList.add(new NaviLatLng(40.099927,116.54173)); - View smpView = LayoutInflater.from(context).inflate(R.layout.module_small_map_view, this); mAMapNaviView = smpView.findViewById(R.id.aMapNaviView); overLayerView = findViewById(R.id.overLayer); mAMapNavi = AMapNavi.getInstance(context); mAMapNavi.addAMapNaviListener(this); mAMapNaviView.setAMapNaviViewListener(this); - CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, mGoAutopilotStatusListener); - CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener); initAMapView(context); - // 注册定位监听 - CallerMapLocationListenerManager.INSTANCE.addListener(TAG, this); //设置全览模式 overLayerView.setOnClickListener(v -> { mAMapNaviView.displayOverview(); }); + // 注册定位监听 + CallerMapLocationListenerManager.INSTANCE.addListener(TAG, this); + CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, mGoAutopilotStatusListener); + CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener); + } + + private void initAMapView(Context context) { + Log.d(TAG, "initAMapView"); + mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); + mAMap = mAMapNaviView.getMap(); + setUpMap(); + customOptions(); + } + + private void setUpMap(){ + // 地图文字标注 + mAMap.showMapText(true); + // 显示实时路况图层,aMap是地图控制器对象。 + mAMap.setTrafficEnabled(true); + //设置希望展示的地图缩放级别 + mAMap.moveCamera(mCameraUpdate); + //设置地图的样式 + UiSettings uiSettings = mAMap.getUiSettings(); + //地图缩放级别的交换按钮 + uiSettings.setZoomControlsEnabled(false); + //所有手势 + uiSettings.setAllGesturesEnabled(true); + //隐藏指南针 + uiSettings.setCompassEnabled(false); + //设置倾斜手势是否可用。 + uiSettings.setTiltGesturesEnabled(true); + //隐藏默认的定位按钮 + uiSettings.setMyLocationButtonEnabled(false); + //设置Logo下边界距离屏幕底部的边距,设置为负值即可 + uiSettings.setLogoBottomMargin(-150); + Log.d(TAG, "before onMapLoaded"); + } + + /** + * 自定义导航View和路况状态 + */ + private void customOptions() { + AMapNaviViewOptions options = mAMapNaviView.getViewOptions(); + //关闭自动绘制路线,自行绘制路线 +// options.setAutoDrawRoute(false); + //不显示导航界面 + options.setLayoutVisible(false); + //黑夜模式 + options.setNaviNight(true); + //导航全程光柱 + options.setTrafficBarEnabled(false); + //指南针 +// options.setCompassEnabled(false); +// options.setTilt((int) tilt); + //自车车标 + options.setCarBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_my_location_logo)); + options.setFourCornersBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.amap_custom_corner)); + options.setStartPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_dir_start)); + options.setWayPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon_module_small_map_four_corners)); + options.setEndPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_dir_end)); + //与走过的路线 + options.setAfterRouteAutoGray(true); + //路线纹理自定义 + RouteOverlayOptions routeOverlayOptions = new RouteOverlayOptions(); + routeOverlayOptions.setTurnArrowIs3D(false); + routeOverlayOptions.setUnknownTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_no));//未知路段 + routeOverlayOptions.setSmoothTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.amap_custom_smooth_route)); + routeOverlayOptions.setJamTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_bad));//拥堵路段 + routeOverlayOptions.setVeryJamTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_grayred));//超级拥堵路段 + routeOverlayOptions.setPassRoute(BitmapFactory.decodeResource(getResources(), R.drawable.amap_custom_pass_route));//走过的路段 + options.setRouteOverlayOptions(routeOverlayOptions); + mAMapNaviView.setViewOptions(options); } private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { @@ -272,85 +310,6 @@ public class AMapCustomView CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(TAG); } - private void initAMapView(Context context) { - mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); - AMapNaviViewOptions options = mAMapNaviView.getViewOptions(); - //关闭自动绘制路线,自行绘制路线 -// options.setAutoDrawRoute(false); - //不显示导航界面 - options.setLayoutVisible(false); - //黑夜模式 - options.setNaviNight(true); - //导航全程光柱 - options.setTrafficBarEnabled(false); - //指南针 -// options.setCompassEnabled(false); -// options.setTilt((int) tilt); - //自车车标 - options.setCarBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_my_location_logo)); - options.setFourCornersBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.amap_custom_corner)); - options.setStartPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_dir_start)); - options.setWayPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon_module_small_map_four_corners)); - options.setEndPointBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.module_small_map_view_dir_end)); - //与走过的路线 - options.setAfterRouteAutoGray(true); - //路线纹理自定义 - RouteOverlayOptions routeOverlayOptions = new RouteOverlayOptions(); - routeOverlayOptions.setTurnArrowIs3D(false); - routeOverlayOptions.setUnknownTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_no));//未知路段 - routeOverlayOptions.setSmoothTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.amap_custom_smooth_route)); - routeOverlayOptions.setJamTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_bad));//拥堵路段 - routeOverlayOptions.setVeryJamTraffic(BitmapFactory.decodeResource(getResources(), R.drawable.custtexture_grayred));//超级拥堵路段 - routeOverlayOptions.setPassRoute(BitmapFactory.decodeResource(getResources(), R.drawable.amap_custom_pass_route));//走过的路段 - options.setRouteOverlayOptions(routeOverlayOptions); - mAMapNaviView.setViewOptions(options); - - mAMap = mAMapNaviView.getMap(); - mAMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() { - @Override - public void onMapLoaded() { - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "smp---onMapLoaded"); - // 加载自定义样式 - CustomMapStyleOptions customMapStyleOptions = new CustomMapStyleOptions() - .setEnable(true) - .setStyleData(MapAssetStyleUtils.getAssetsStyle(context)) - .setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(context)); - // 设置自定义样式 - mAMap.setCustomMapStyle(customMapStyleOptions); - } - }); - - // 地图文字标注 - mAMap.showMapText(true); - // 显示实时路况图层,aMap是地图控制器对象。 - mAMap.setTrafficEnabled(true); - //设置希望展示的地图缩放级别 - mAMap.moveCamera(mCameraUpdate); - //设置地图的样式 - UiSettings uiSettings = mAMap.getUiSettings(); - //地图缩放级别的交换按钮 - uiSettings.setZoomControlsEnabled(false); - //所有手势 - uiSettings.setAllGesturesEnabled(true); - //隐藏指南针 - uiSettings.setCompassEnabled(false); - //设置倾斜手势是否可用。 - uiSettings.setTiltGesturesEnabled(true); - //隐藏默认的定位按钮 - uiSettings.setMyLocationButtonEnabled(false); - //设置Logo下边界距离屏幕底部的边距,设置为负值即可 - uiSettings.setLogoBottomMargin(-150); - int strategy = 0; - try { - //再次强调,最后一个参数为true时代表多路径,否则代表单路径 - strategy = mAMapNavi.strategyConvert(true, false, false, false, false); - } catch (Exception e) { - e.printStackTrace(); - } - //指定路径绘制导航路线 - mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); - } - @Override public boolean onInterceptTouchEvent(MotionEvent ev) { @@ -701,7 +660,14 @@ public class AMapCustomView @Override public void onNaviViewLoaded() { - + Log.d(TAG, "---onNaviViewLoaded---"); + // 加载自定义样式 + CustomMapStyleOptions customMapStyleOptions = new CustomMapStyleOptions() + .setEnable(true) + .setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style.data")) + .setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra.data")); + // 设置自定义样式 + mAMap.setCustomMapStyle(customMapStyleOptions); } @Override diff --git a/core/mogo-core-res/src/main/assets/small_map_style.data b/core/mogo-core-res/src/main/assets/over_view_style.data similarity index 100% rename from core/mogo-core-res/src/main/assets/small_map_style.data rename to core/mogo-core-res/src/main/assets/over_view_style.data diff --git a/core/mogo-core-res/src/main/assets/small_map_style_extra.data b/core/mogo-core-res/src/main/assets/over_view_style_extra.data similarity index 100% rename from core/mogo-core-res/src/main/assets/small_map_style_extra.data rename to core/mogo-core-res/src/main/assets/over_view_style_extra.data diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/MapAssetStyleUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/MapAssetStyleUtils.java index 58462276e1..beeb628e8d 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/MapAssetStyleUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/MapAssetStyleUtils.java @@ -12,11 +12,11 @@ import java.io.InputStream; */ public class MapAssetStyleUtils { - public static byte[] getAssetsStyle(Context context) { + public static byte[] getAssetsStyle(Context context,String fileName) { byte[] buffer1 = null; InputStream is1 = null; try { - is1 = context.getResources().getAssets().open("small_map_style.data"); + is1 = context.getResources().getAssets().open(fileName); //eg. small_map_style.data int lenght1 = is1.available(); buffer1 = new byte[lenght1]; is1.read(buffer1); @@ -35,11 +35,11 @@ public class MapAssetStyleUtils { } - public static byte[] getAssetsExtraStyle(Context context) { + public static byte[] getAssetsExtraStyle(Context context, String fileName) { byte[] buffer1 = null; InputStream is1 = null; try { - is1 = context.getResources().getAssets().open("small_map_style_extra.data"); + is1 = context.getResources().getAssets().open(fileName); //eg. small_map_style_extra.data int lenght1 = is1.available(); buffer1 = new byte[lenght1]; is1.read(buffer1);