【在线车辆】默认选中一辆车后,可能出现昵称或头像被附近气泡覆盖的情况
http://jira.zhidaohulian.com/browse/UI-386?jql=project%20%3D%20UI%20AND%20assignee%20in%20(donghongyu)%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC
This commit is contained in:
董宏宇
2020-02-28 14:53:44 +08:00
parent 80483affd1
commit dee62d773d

View File

@@ -58,14 +58,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
private boolean isCheckOnLineData = false;
private static Context mContext;
private static IMogoMarker lastMarker;
// 最后一次选中的气泡
private static IMogoMarker mLastCHeckMarker;
private static MapMarkerManager mMarkerManager;
private static String mLastHighLightModule = "";
// 记录其它已经缩小的Marker
public static ArrayList<String> alreadySmallMarker = new ArrayList<>();
// 距离用户最近的Marker
private IMogoMarker nearlyMogoMarker = null;
private IMogoMarker mNearlyMogoMarker = null;
private MapMarkerManager() {
}
@@ -122,14 +123,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker" + marker);
try {
if (lastMarker != null) {
if (mLastCHeckMarker != null) {
// 判断点击的是否是同一个
if (marker.equals(lastMarker)) {
if (marker.equals(mLastCHeckMarker)) {
Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样不做处理" + marker);
return false;
}
// 将上次选中 Marker 设置为未选中状态
closeMarker(lastMarker);
closeMarker(mLastCHeckMarker);
}
// 将当前的Marker设置为选中
@@ -137,7 +138,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 数据统计代码
final Map<String, Object> properties = new HashMap<>();
switch (lastMarker.getOwner()) {
switch (mLastCHeckMarker.getOwner()) {
case ServiceConst.CARD_TYPE_CARS_CHATTING:
properties.put("type", 3);
break;
@@ -148,7 +149,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
properties.put("type", 2);
break;
case ServiceConst.CARD_TYPE_NOVELTY:
MarkerShowEntity showEntity = (MarkerShowEntity) lastMarker.getObject();
MarkerShowEntity showEntity = (MarkerShowEntity) mLastCHeckMarker.getObject();
Object bindObj = showEntity.getBindObj();
if (bindObj instanceof MarkerNoveltyInfo) {
switch (((MarkerNoveltyInfo) bindObj).getPoiType()) {
@@ -235,7 +236,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
if (mogoMarker == null || mogoMarker.isDestroyed()) {
continue;
}
mogoMarker.setToTop();
try {
mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator());
} catch (Exception e) {
@@ -274,14 +274,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
if (marker != null) {
Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭" + marker);
closeMarker(marker);
lastMarker = null;
mLastCHeckMarker = null;
}
}
// 展开气泡
private void openMarker(IMogoMarker mogoMarker) {
if (mogoMarker != null) {
lastMarker = mogoMarker;
mLastCHeckMarker = mogoMarker;
Object object = mogoMarker.getObject();
if (object != null) {
MarkerShowEntity markerShowEntity = (MarkerShowEntity) object;
@@ -308,7 +308,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 绘制Marker
public synchronized void drawMapMarker(MarkerResponse response) {
lastMarker = null;
mLastCHeckMarker = null;
JSONArray array = new JSONArray();
@@ -368,7 +368,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 进行比较,保留最近的一个数据
if (calculateDistance < nearlyDistance) {
nearlyDistance = calculateDistance;
nearlyMogoMarker = iMogoMarker;
mNearlyMogoMarker = iMogoMarker;
}
} catch (Exception e) {
@@ -465,25 +465,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
try {
// 在ACC on 之后第一次获取到了在线车辆数据选中最近的一个Marker
if (isCheckOnLineData) {
if (nearlyMogoMarker != null) {
Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + nearlyMogoMarker);
if (mNearlyMogoMarker != null) {
Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMogoMarker);
// 移动地图到指定位置
MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false);
MarkerServiceHandler.getMapUIController().moveToCenter(nearlyMogoMarker.getPosition());
MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMogoMarker.getPosition());
onMarkerClicked(nearlyMogoMarker);
MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
onMarkerClicked(mNearlyMogoMarker);
MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMogoMarker);
isCheckOnLineData = false;
}
}
if (isACC_ON && isSynchronousOnLineData) {
isSynchronousOnLineData = false;
if (nearlyMogoMarker != null) {
Logger.d(TAG, "ACC ON 触发,将附近的在线车辆数据同步给卡片:" + nearlyMogoMarker);
openMarker(nearlyMogoMarker);
if (mNearlyMogoMarker != null) {
Logger.d(TAG, "ACC ON 触发,将附近的在线车辆数据同步给卡片:" + mNearlyMogoMarker);
openMarker(mNearlyMogoMarker);
// 将数据同步给在线用户卡片
MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_USER_DATA, nearlyMogoMarker);
MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_USER_DATA, mNearlyMogoMarker);
}
}
} catch (Exception e) {
@@ -535,9 +535,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
*/
public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
if (!TextUtils.isEmpty(mLastHighLightModule)
&& lastMarker != null
&& !TextUtils.isEmpty(lastMarker.getOwner())
&& TextUtils.equals(mLastHighLightModule, lastMarker.getOwner())
&& mLastCHeckMarker != null
&& !TextUtils.isEmpty(mLastCHeckMarker.getOwner())
&& TextUtils.equals(mLastHighLightModule, mLastCHeckMarker.getOwner())
) {
return drawMapMarker(markerShowEntity, true);
} else {