修复了bug

同步修复V2X的气泡绘制逻辑,V2X情况下只保留在线车辆的数据
This commit is contained in:
董宏宇
2020-02-20 15:21:49 +08:00
parent 1f042760ac
commit b3325e9c2c
2 changed files with 32 additions and 21 deletions

View File

@@ -553,7 +553,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
try {
if ( isTrue ) {
// V2X_UI时不在自动刷新打点策略
stopAutoRefreshStrategy();
// stopAutoRefreshStrategy();
// 清除所有的打点信息记录
MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear();
} else {

View File

@@ -54,7 +54,7 @@ import java.util.Map;
* version: 1.0
*/
public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessageListener<MarkerResponse> {
private static final String TAG = "MarkerManager";
private static final String TAG = "MapMarkerManager";
// 第一次请求到地图的Marker数据
private boolean isFirstMarker = true;
private boolean isOnLineCard = false;
@@ -66,6 +66,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 记录其它已经缩小的Marker
public static ArrayList<String> alreadySmallMarker = new ArrayList<>();
IMogoMarker nearlyMogoMarker = null;
private MapMarkerManager() {
}
@@ -141,6 +142,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
marker.setIcon(fromView(markerView.getView()));
lastMarker = marker;
MarkerServiceHandler.getMapUIController().moveToCenter(lastMarker.getPosition());
// 数据统计代码
final Map<String, Object> properties = new HashMap<>();
@@ -360,17 +362,24 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
isFirstMarker = true;
} else {
// 清空所有地图上绘制的Marker
MarkerServiceHandler.getMarkerManager().removeMarkers();
if (!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) {
MarkerServiceHandler.getMarkerManager().removeMarkers();
}
}
List<MarkerCarChat> carChatList = markerCardResult.getCarChat();
List<MarkerOnlineCar> onlineCarList = markerCardResult.getOnlineCar();
List<MarkerExploreWay> exploreWayList = markerCardResult.getExploreWay();
List<MarkerShareMusic> shareMusicList = markerCardResult.getShareMusic();
List<MarkerNoveltyInfo> noveltyInfoList = markerCardResult.getNoveltyInfo();
List<MarkerExploreWay> exploreWayList = null;
List<MarkerShareMusic> shareMusicList = null;
List<MarkerNoveltyInfo> noveltyInfoList = null;
// V2X 场景下只保留在线车辆数据
if (!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) {
exploreWayList = markerCardResult.getExploreWay();
shareMusicList = markerCardResult.getShareMusic();
noveltyInfoList = markerCardResult.getNoveltyInfo();
}
if (onlineCarList != null) {
IMogoMarker nearlyMogoMarker = null;
double nearlyDistance = Double.MAX_VALUE;
for (MarkerOnlineCar markerOnlineCar : onlineCarList) {
MarkerLocation markerLocation = markerOnlineCar.getLocation();
@@ -403,18 +412,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
}
}
fillNumberTrackEventBody(array, 3, onlineCarList.size());
try {
// 在ACC on 之后第一次获取到了在线车辆数据选中最近的一个Marker
if (isFirstMarker && isOnLineCard) {
if (nearlyMogoMarker != null) {
MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
isFirstMarker = false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
@@ -499,6 +496,21 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 同步新绘制的气泡状态
alreadySmallMarker.clear();
highlightedMarker(mLastHighLightModule, true);
try {
Thread.sleep(500);
// 在ACC on 之后第一次获取到了在线车辆数据选中最近的一个Marker
if (isFirstMarker && isOnLineCard) {
if (nearlyMogoMarker != null) {
Logger.w(TAG, "ACC ON,或者语音搜索触发默认选中最近的在线车辆nearlyMogoMarker" + nearlyMogoMarker);
onMarkerClicked(nearlyMogoMarker);
MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
isFirstMarker = false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -595,8 +607,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
@Override
public void onMsgReceived(final MarkerResponse response) {
Logger.e(TAG, "MarkerResponse======" + response);
if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() &&
!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) {
if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override