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) {