修复
【在线车辆】默认选中一辆车后,可能出现昵称或头像被附近气泡覆盖的情况 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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user