From a0ff2f19a0ae4ef334f5a952cfff7d2585f0aed9 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 27 Apr 2020 16:17:26 +0800 Subject: [PATCH 1/4] opt map style --- .../map/impl/amap/utils/MapStyleUtils.java | 32 +++++++++---------- .../src/main/res/values-ldpi/dimens.xml | 2 +- .../map-amap/src/main/res/values/dimens.xml | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java index d8c0bb3713..241f500425 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java @@ -42,24 +42,24 @@ public class MapStyleUtils { RouteOverlayOptions options = new RouteOverlayOptions(); // 设置导航线路的宽度 options.setLineWidth( AbsMogoApplication.getApp().getResources().getDimension(R.dimen.path_width) ); - // 设置交通状况情况良好下的纹理位图 - options.setSmoothTraffic( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); - // 设置路线的图标 - options.setNormalRoute( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); - // 设置交通状况未知下的纹理位图 - options.setUnknownTraffic( colorToBitmap( ColorEnum.route_overlay_line_unknown.getColor() ) ); - // 设置交通状况迟缓下的纹理位图 - options.setSlowTraffic( colorToBitmap( ColorEnum.route_overlay_line_slow.getColor() ) ); - // 设置交通状况非常拥堵下的纹理位图 - options.setVeryJamTraffic( colorToBitmap( ColorEnum.route_overlay_line_very_traffic.getColor() ) ); - // 设置交通状况拥堵下的纹理位图 - options.setJamTraffic( colorToBitmap( ColorEnum.route_overlay_line_traffic.getColor() ) ); - // 设置浮于道路上的『小箭头』图标的纹理位图 - options.setArrowOnTrafficRoute( colorToBitmap( ColorEnum.transparent.getColor() ) ); +// // 设置交通状况情况良好下的纹理位图 +// options.setSmoothTraffic( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); +// // 设置路线的图标 +// options.setNormalRoute( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); +// // 设置交通状况未知下的纹理位图 +// options.setUnknownTraffic( colorToBitmap( ColorEnum.route_overlay_line_unknown.getColor() ) ); +// // 设置交通状况迟缓下的纹理位图 +// options.setSlowTraffic( colorToBitmap( ColorEnum.route_overlay_line_slow.getColor() ) ); +// // 设置交通状况非常拥堵下的纹理位图 +// options.setVeryJamTraffic( colorToBitmap( ColorEnum.route_overlay_line_very_traffic.getColor() ) ); +// // 设置交通状况拥堵下的纹理位图 +// options.setJamTraffic( colorToBitmap( ColorEnum.route_overlay_line_traffic.getColor() ) ); +// // 设置浮于道路上的『小箭头』图标的纹理位图 +// options.setArrowOnTrafficRoute( colorToBitmap( ColorEnum.transparent.getColor() ) ); // 自定义走过路线纹理,默认走过路线置灰功能为关,需要在AMapNaviViewOptions.setAfterRouteAutoGray(boolean)打开,该方法才生效 options.setPassRoute( colorToBitmap( ColorEnum.light_gray.getColor() ) ); - // 设置路线虚线纹理 - options.setFairWayRes( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); +// // 设置路线虚线纹理 +// options.setFairWayRes( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); options.setArrowColor( Color.WHITE ); // 高德地图内部配置颜色 options.setArrowSideColor( 1990523135 ); // 高德地图内部配置颜色 return options; diff --git a/libraries/map-amap/src/main/res/values-ldpi/dimens.xml b/libraries/map-amap/src/main/res/values-ldpi/dimens.xml index eebbb06a9c..242c78ec72 100644 --- a/libraries/map-amap/src/main/res/values-ldpi/dimens.xml +++ b/libraries/map-amap/src/main/res/values-ldpi/dimens.xml @@ -1,4 +1,4 @@ - 10px + 40px \ No newline at end of file diff --git a/libraries/map-amap/src/main/res/values/dimens.xml b/libraries/map-amap/src/main/res/values/dimens.xml index 0f01b5d190..bfdd986f06 100644 --- a/libraries/map-amap/src/main/res/values/dimens.xml +++ b/libraries/map-amap/src/main/res/values/dimens.xml @@ -1,4 +1,4 @@ - 20px + 80px \ No newline at end of file From 46ba0c0aef7290d5996695eaafdd2a5135ba6862 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 27 Apr 2020 16:21:39 +0800 Subject: [PATCH 2/4] opt --- .../service/marker/MapMarkerManager.java | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index c097830931..18b2ce159e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -19,7 +19,6 @@ import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerNoveltyInfo; import com.mogo.module.common.entity.MarkerOnlineCar; -import com.mogo.module.common.entity.MarkerPoiTypeEnum; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShareMusic; import com.mogo.module.common.entity.MarkerShowEntity; @@ -68,7 +67,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 记录其它已经缩小的Marker public ArrayList alreadySmallMarker = new ArrayList<>(); // 存储所有汽车marker - public ArrayList carMarkers = new ArrayList<>(); +// public ArrayList carMarkers = new ArrayList<>(); // 距离用户最近的Marker private IMogoMarker mNearlyMarker = null; // 记录上次请求数据,切换卡片时做数据处理 @@ -126,7 +125,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } else { mCurrentModuleName = moduleName; runOnTargetThread(() -> { - MarkerServiceHandler.getMarkerManager().removeMarkers(); + MarkerServiceHandler.getMarkerManager().removeMarkersExcept(ModuleNames.CARD_TYPE_USER_DATA); drawMarkerByCurrentType(mLastDataResult); }); } @@ -275,10 +274,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if (mogoMarker == null) { return; } - if (mLastCheckMarker != null) { - closeMarker(mLastCheckMarker); - } mLastCheckMarker = mogoMarker; + // 在线车辆点击使用infoWindow + if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { + if ( !mogoMarker.isDestroyed() ) { + mogoMarker.setInfoWindowAdapter( UserDataMarkerInfoWindowAdapter.getInstance(mContext) ); + mogoMarker.showInfoWindow(); + Logger.d( TAG, "打开info window" ); + } + } else { Object object = mogoMarker.getObject(); if (object != null) { MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; @@ -289,12 +293,18 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mogoMarker.setToTop(); } } + } // 折叠气泡 private void closeMarker(IMogoMarker mogoMarker) { if (mogoMarker == null) { return; } + // 在线车辆点击使用infoWindow + if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { +// mogoMarker.hideInfoWindow(); + Logger.d( TAG, "关闭info window" ); + } else { Object object = mogoMarker.getObject(); if (object != null) { MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; @@ -304,6 +314,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); } } + } // 绘制Marker public synchronized void drawMapMarker(MarkerResponse response) { @@ -387,10 +398,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, case ServiceConst.CARD_TYPE_NOVELTY: drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; - case ServiceConst.CARD_TYPE_CARS_CHATTING: - case ServiceConst.CARD_TYPE_USER_DATA: - drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); - break; +// case ServiceConst.CARD_TYPE_CARS_CHATTING: +// case ServiceConst.CARD_TYPE_USER_DATA: +// drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); +// break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; @@ -406,12 +417,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerCardResult */ private void drawAllMarker(MarkerCardResult markerCardResult) { - List onlineCarList = markerCardResult.getOnlineCar(); +// List onlineCarList = markerCardResult.getOnlineCar(); List exploreWayList = markerCardResult.getExploreWay(); List shareMusicList = markerCardResult.getShareMusic(); List noveltyInfoList = markerCardResult.getNoveltyInfo(); - drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_ALL); +// drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_ALL); drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL); drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_ALL); drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL); @@ -444,6 +455,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); +// iMogoMarker.setInfoWindowAdapter(this); startSmooth(iMogoMarker, markerOnlineCar, markerLocation); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 @@ -818,13 +830,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, }; private void getOnlineCarList() { - if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) - || mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA) ) { if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow()){ return; } + if ( TextUtils.equals( ServiceConst.CARD_TYPE_USER_DATA, mCurrentModuleName ) + || TextUtils.equals( ServiceConst.CARD_TYPE_BUSINESS_OPERATION, mCurrentModuleName ) + || TextUtils.equals( ServiceConst.CARD_TYPE_CARS_CHATTING, mCurrentModuleName )) { + mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { @Override public void onSuccess(Object o) { @@ -836,6 +850,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, removeCarMarkers(); List onlineCarList = result.getOnlineCar(); dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList); + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow()){ + return; + } drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); } @@ -850,17 +867,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } private void removeCarMarkers(){ - for (int i = 0; i < carMarkers.size(); i++) { - IMogoMarker marker = carMarkers.get(i); - marker.destroy(); - } + MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_USER_DATA ); } // 平滑移动 private void startSmooth(IMogoMarker iMogoMarker, MarkerOnlineCar markerOnlineCar, MarkerLocation markerLocation) { - carMarkers.add(iMogoMarker); - List poisList = markerOnlineCar.getPois(); if (poisList != null && poisList.size() > 0) { From 25b44ce76cd2e1a64fcc9db4b025c6115b170320 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 27 Apr 2020 16:32:28 +0800 Subject: [PATCH 3/4] opt may style --- .../main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java | 4 ++-- libraries/map-amap/src/main/res/values/dimens.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java index 241f500425..82e1727d0a 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java @@ -60,8 +60,8 @@ public class MapStyleUtils { options.setPassRoute( colorToBitmap( ColorEnum.light_gray.getColor() ) ); // // 设置路线虚线纹理 // options.setFairWayRes( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) ); - options.setArrowColor( Color.WHITE ); // 高德地图内部配置颜色 - options.setArrowSideColor( 1990523135 ); // 高德地图内部配置颜色 + options.setArrowColor( Color.parseColor( "#92C9FF" ) ); // 高德地图内部配置颜色 + options.setArrowSideColor( Color.parseColor( "#4F9BF2" ) ); // 高德地图内部配置颜色 return options; } diff --git a/libraries/map-amap/src/main/res/values/dimens.xml b/libraries/map-amap/src/main/res/values/dimens.xml index bfdd986f06..e8bccfa287 100644 --- a/libraries/map-amap/src/main/res/values/dimens.xml +++ b/libraries/map-amap/src/main/res/values/dimens.xml @@ -1,4 +1,4 @@ - 80px + 60px \ No newline at end of file From acb0b6d7c29d9fbb1dfffaa88f5720ae4501d258 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 27 Apr 2020 16:43:42 +0800 Subject: [PATCH 4/4] opt: moving marker --- modules/mogo-module-service/build.gradle | 1 + .../module/service/MarkerServiceHandler.java | 126 ++++++++------- .../service/marker/MapMarkerBaseView.java | 1 + .../module/service/marker/MapMarkerView.java | 3 +- .../UserDataMarkerInfoWindowAdapter.java | 145 ++++++++++++++++++ .../drawable-ldpi/module_service_ic_call.png | Bin 0 -> 8990 bytes .../drawable-xhdpi/module_service_ic_call.png | Bin 0 -> 3738 bytes .../module_services_driver_blue_info.xml | 15 ++ .../module_services_driver_type_blue_info.xml | 15 ++ ...module_services_driver_type_green_info.xml | 15 ++ .../module_services_driver_type_red_info.xml | 15 ++ .../layout/view_map_data_user_info_window.xml | 91 +++++++++++ .../src/main/res/layout/view_map_marker.xml | 3 +- 13 files changed, 370 insertions(+), 60 deletions(-) create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java create mode 100644 modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_call.png create mode 100644 modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_call.png create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_blue_info.xml create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_green_info.xml create mode 100644 modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_red_info.xml create mode 100644 modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle index 57f5a280c7..6c15a6d379 100644 --- a/modules/mogo-module-service/build.gradle +++ b/modules/mogo-module-service/build.gradle @@ -45,6 +45,7 @@ dependencies { annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxandroid + implementation rootProject.ext.dependencies.carcallprovider if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 089851d54e..a1774a2d4a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -7,6 +7,7 @@ import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.carchattingprovider.ICarsChattingProvider; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.marker.MapMarkerManager; @@ -25,6 +26,7 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.zhidao.carchattingprovider.CallChattingProviderConstant; /** * author : donghongyu @@ -36,128 +38,136 @@ import com.mogo.service.statusmanager.IMogoStatusManager; public class MarkerServiceHandler { private static final String TAG = "MarkerServiceHandler"; - private static IMogoServiceApis mApis; + private static IMogoServiceApis sApis; - private static IMogoMapService mMapService; - private static IMogoMarkerManager mMarkerManager; - private static IMogoNavi mNavi; - private static IMogoMapUIController mMapUIController; - private static IMogoLocationClient mLocationClient; - private static IMogoStatusManager mMogoStatusManager; - private static IMogoImageloader mImageloader; - private static IMogoSocketManager mMogoSocketManager; - private static IMogoCardManager mMogoCardManager; - private static IMogoAnalytics mMogoAnalytics; - private static IMogoRegisterCenter mRegisterCenter; - private static IMogoActionManager mActionManager; - private static IMogoDataManager mDataManager; - private static IMogoIntentManager mIntentManager; - private static IMogoADASController mADASController; - private static IMogoLauncher mLauncher; - private static IMogoFragmentManager mFragmentManager; + private static IMogoMapService sMapService; + private static IMogoMarkerManager sMarkerManager; + private static IMogoNavi sNavi; + private static IMogoMapUIController sMapUIController; + private static IMogoLocationClient sLocationClient; + private static IMogoStatusManager sMogoStatusManager; + private static IMogoImageloader sImageloader; + private static IMogoSocketManager sMogoSocketManager; + private static IMogoCardManager sMogoCardManager; + private static IMogoAnalytics sMogoAnalytics; + private static IMogoRegisterCenter sRegisterCenter; + private static IMogoActionManager sActionManager; + private static IMogoDataManager sDataManager; + private static IMogoIntentManager sIntentManager; + private static IMogoADASController sADASController; + private static IMogoLauncher sLauncher; + private static IMogoFragmentManager sFragmentManager; + private static ICarsChattingProvider sCarChatting; - private static MapMarkerManager mMapMarkerManager; + private static MapMarkerManager sMapMarkerManager; public static void init( final Context context ) { - mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); - mMapService = mApis.getMapServiceApi(); - mImageloader = mApis.getImageLoaderApi(); - mMogoStatusManager = mApis.getStatusManagerApi(); - mMogoSocketManager = mApis.getSocketManagerApi( context ); - mMogoCardManager = mApis.getCardManagerApi(); - mMogoAnalytics = mApis.getAnalyticsApi(); - mMarkerManager = mMapService.getMarkerManager( context ); - mNavi = mMapService.getNavi( context ); - mMapUIController = mMapService.getMapUIController(); - mLocationClient = mMapService.getSingletonLocationClient( context ); - mRegisterCenter = mApis.getRegisterCenterApi(); - mActionManager = mApis.getActionManagerApi(); - mDataManager = mApis.getDataManagerApi(); - mIntentManager = mApis.getIntentManagerApi(); - mADASController = mApis.getAdasControllerApi(); - mLauncher = mApis.getLauncherApi(); - mFragmentManager = mApis.getFragmentManagerApi(); + sApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context ); + sMapService = sApis.getMapServiceApi(); + sImageloader = sApis.getImageLoaderApi(); + sMogoStatusManager = sApis.getStatusManagerApi(); + sMogoSocketManager = sApis.getSocketManagerApi( context ); + sMogoCardManager = sApis.getCardManagerApi(); + sMogoAnalytics = sApis.getAnalyticsApi(); + sMarkerManager = sMapService.getMarkerManager( context ); + sNavi = sMapService.getNavi( context ); + sMapUIController = sMapService.getMapUIController(); + sLocationClient = sMapService.getSingletonLocationClient( context ); + sRegisterCenter = sApis.getRegisterCenterApi(); + sActionManager = sApis.getActionManagerApi(); + sDataManager = sApis.getDataManagerApi(); + sIntentManager = sApis.getIntentManagerApi(); + sADASController = sApis.getAdasControllerApi(); + sLauncher = sApis.getLauncherApi(); + sFragmentManager = sApis.getFragmentManagerApi(); - mMapMarkerManager = MapMarkerManager.getInstance(); - mMapMarkerManager.init( context ); + sCarChatting = (ICarsChattingProvider)ARouter.getInstance().build( CallChattingProviderConstant.CAR_CALL_PROVIDER ).navigation( context ); + + sMapMarkerManager = MapMarkerManager.getInstance(); + sMapMarkerManager.init( context ); } public static IMogoServiceApis getApis(){ - return mApis; + return sApis; } public static IMogoMapService getMapService() { - return mMapService; + return sMapService; } public static IMogoMarkerManager getMarkerManager() { - return mMarkerManager; + return sMarkerManager; } public static IMogoNavi getNavi() { - return mNavi; + return sNavi; } public static IMogoMapUIController getMapUIController() { - return mMapUIController; + return sMapUIController; } public static IMogoImageloader getImageloader() { - return mImageloader; + return sImageloader; } public static IMogoSocketManager getMogoSocketManager() { - return mMogoSocketManager; + return sMogoSocketManager; } public static IMogoStatusManager getMogoStatusManager() { - return mMogoStatusManager; + return sMogoStatusManager; } public static IMogoCardManager getMogoCardManager() { - return mMogoCardManager; + return sMogoCardManager; } public static IMogoAnalytics getMogoAnalytics() { - return mMogoAnalytics; + return sMogoAnalytics; } public static IMogoLocationClient getMogoLocationClient() { - return mLocationClient; + return sLocationClient; } public static MapMarkerManager getMapMarkerManager() { - return mMapMarkerManager; + return sMapMarkerManager; } public static IMogoRegisterCenter getRegisterCenter() { - return mRegisterCenter; + return sRegisterCenter; } public static IMogoActionManager getActionManager() { - return mActionManager; + return sActionManager; } public static IMogoIntentManager getIntentManager() { - return mIntentManager; + return sIntentManager; } public static IMogoADASController getADASController() { - return mADASController; + return sADASController; } public static IMogoLauncher getLauncher() { - return mLauncher; + return sLauncher; } public static IMogoFragmentManager getFragmentManager() { - return mFragmentManager; + return sFragmentManager; } public static IMogoDataManager getDataManager() { - return mDataManager; + return sDataManager; } + public static ICarsChattingProvider getCarChatting() { + return sCarChatting; + } + + //TODO -------------以下方法是临时过度使用的,后面统一使用,getMapMarkerManager进行调用 /** diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java index c790f05e65..e46baeee29 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java @@ -41,6 +41,7 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV protected MogoImageView ivUserHead; protected ImageView ivIcon; protected ImageView ivCar; + protected ConstraintLayout clMarkerTopView; protected IMogoMarker mMarker; public MapMarkerBaseView(Context context) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index 8ea5d8c389..7679c23839 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -55,6 +55,7 @@ public class MapMarkerView extends MapMarkerBaseView { ivIcon = findViewById(R.id.ivIcon); ivCar = findViewById(R.id.ivCar); ivBg = findViewById(R.id.ivBg); + clMarkerTopView = findViewById(R.id.clMarkerTopView); } public void updateView(MarkerShowEntity markerShowEntity) { @@ -69,7 +70,7 @@ public class MapMarkerView extends MapMarkerBaseView { ivCar.setImageResource(R.drawable.icon_map_marker_car_gray); ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle()); // ivCar.setRotation(new Random().nextInt(360)); - + clMarkerTopView.setVisibility(View.GONE); if (bindObj instanceof MarkerOnlineCar) { if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) { ivBg.setImageResource(R.drawable.bg_map_marker_blue); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java new file mode 100644 index 0000000000..dcba9a1ec9 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java @@ -0,0 +1,145 @@ +package com.mogo.module.service.marker; + +import android.content.Context; +import android.os.Looper; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.mogo.map.marker.IMogoInfoWindowAdapter; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.module.common.entity.MarkerLocation; +import com.mogo.module.common.entity.MarkerOnlineCar; +import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.common.entity.MarkerUserInfo; +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.R; +import com.mogo.service.imageloader.MogoImageView; +import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.WindowUtils; +import com.mogo.utils.logger.Logger; +import com.zhidao.carchattingprovider.CallChattingProviderConstant; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-27 + *

+ * 在线车辆点击后弹出的info window 样式 + */ +public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { + + private static final String TAG = "UserDataMarkerInfoWindowAdapter"; + + private static volatile UserDataMarkerInfoWindowAdapter sInstance; + private final Context mContext; + + private View mInfoWindowView = null; + + private MogoImageView mUserHeader; + private TextView mContent; + private TextView mTag; + private ImageView mCall; + + private UserDataMarkerInfoWindowAdapter( Context context ) { + this.mContext = context; + } + + public static UserDataMarkerInfoWindowAdapter getInstance( Context context ) { + if ( sInstance == null ) { + synchronized ( UserDataMarkerInfoWindowAdapter.class ) { + if ( sInstance == null ) { + sInstance = new UserDataMarkerInfoWindowAdapter( context ); + } + } + } + return sInstance; + } + + public synchronized void release() { + sInstance = null; + } + + @Override + public View getInfoWindow( IMogoMarker marker ) { + return inflateView( marker ); + } + + private View inflateView( IMogoMarker marker ) { + if ( marker == null ) { + return null; + } + + if ( mInfoWindowView == null ) { + mInfoWindowView = LayoutInflater.from( mContext ).inflate( R.layout.view_map_data_user_info_window, null ); + mUserHeader = mInfoWindowView.findViewById( R.id.module_service_id_user_header ); + mContent = mInfoWindowView.findViewById( R.id.module_service_id_content ); + mTag = mInfoWindowView.findViewById( R.id.module_service_id_tag ); + mCall = mInfoWindowView.findViewById( R.id.module_service_id_call ); + } + + try { + MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) marker.getObject(); + mContent.setText( markerShowEntity.getTextContent() ); + loadImageHeader( markerShowEntity ); + if ( markerShowEntity.getBindObj() instanceof MarkerOnlineCar ) { + try { + mTag.setText( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getUserInfo().getSafeLabel() ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + mCall.setOnClickListener( view -> { + if ( markerShowEntity.getBindObj() instanceof MarkerOnlineCar ) { + Map< String, String > params = new HashMap<>(); + MarkerUserInfo userInfo = ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getUserInfo(); + if ( userInfo != null ) { + params.put( CallChattingProviderConstant.CCPROVIDER_SN, userInfo.getSn() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_IMG, userInfo.getUserHead() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_AGE, userInfo.getAgeNumber() + "" ); + params.put( CallChattingProviderConstant.CCPROVIDER_NICK_NAME, userInfo.getUserName() ); + params.put( CallChattingProviderConstant.CCPROVIDER_USER_SEX, userInfo.getGender() + "" ); + } + MarkerLocation location = ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getLocation(); + if ( location != null ) { + params.put( CallChattingProviderConstant.CCPROVIDER_ADDRESS, location.getAddress() ); + params.put( CallChattingProviderConstant.CCPROVIDER_LAT, location.getLat() + "" ); + params.put( CallChattingProviderConstant.CCPROVIDER_LON, location.getLon() + "" ); + } + Logger.d( TAG, "call parameters: %s", params ); + MarkerServiceHandler.getCarChatting().call( params ); + } + } ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + + return mInfoWindowView; + } + + protected void loadImageHeader( final MarkerShowEntity markerShowEntity ) { + + if ( Looper.myLooper() != Looper.getMainLooper() ) { + UiThreadHandler.post( () -> { + runOnUiThread( markerShowEntity ); + } ); + } else { + runOnUiThread( markerShowEntity ); + } + } + + private void runOnUiThread( final MarkerShowEntity markerShowEntity ) { + if ( !TextUtils.isEmpty( markerShowEntity.getIconUrl() ) ) { + MarkerServiceHandler.getImageloader().displayImage( markerShowEntity.getIconUrl(), + mUserHeader, + WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ), null ); + + } else { + mUserHeader.setBackgroundResource( R.drawable.icon_default_user_head ); + } + } +} diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_call.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_call.png new file mode 100644 index 0000000000000000000000000000000000000000..89680bd182c081623188865b92b3ceda8fa98a4e GIT binary patch literal 8990 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 ReD4LgdG*$nvdhjf{|Dx=532wG literal 0 HcmV?d00001 diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_call.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_call.png new file mode 100644 index 0000000000000000000000000000000000000000..3f90fd4af55cd683fbc5da1d339ecdee40fccdd8 GIT binary patch literal 3738 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 Ef{)K}$N&HU literal 0 HcmV?d00001 diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml new file mode 100644 index 0000000000..e71c897020 --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_blue_info.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_blue_info.xml new file mode 100644 index 0000000000..eefd1be813 --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_blue_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_green_info.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_green_info.xml new file mode 100644 index 0000000000..d9d5e5dade --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_green_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_red_info.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_red_info.xml new file mode 100644 index 0000000000..6c70c8805c --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_type_red_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml new file mode 100644 index 0000000000..5028bcbe89 --- /dev/null +++ b/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml index b37be6dc5d..689fcee3f6 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml @@ -12,7 +12,8 @@ + android:layout_height="wrap_content" + android:id="@+id/clMarkerTopView">