This commit is contained in:
wangcongtao
2020-04-27 16:21:39 +08:00
parent a0ff2f19a0
commit 46ba0c0aef

View File

@@ -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<String> alreadySmallMarker = new ArrayList<>();
// 存储所有汽车marker
public ArrayList<IMogoMarker> carMarkers = new ArrayList<>();
// public ArrayList<IMogoMarker> 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<MarkerOnlineCar> onlineCarList = markerCardResult.getOnlineCar();
// List<MarkerOnlineCar> onlineCarList = markerCardResult.getOnlineCar();
List<MarkerExploreWay> exploreWayList = markerCardResult.getExploreWay();
List<MarkerShareMusic> shareMusicList = markerCardResult.getShareMusic();
List<MarkerNoveltyInfo> 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<MarkerOnlineCar> 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<MarkerCarPois> poisList = markerOnlineCar.getPois();
if (poisList != null && poisList.size() > 0) {