修改在线车辆展示逻辑
在线车辆本期要解决「车机 acc on 卡片展示一个附近车主信息」具体需求描述: 用户 acc on后,在线车辆卡片自动选中最近的一个车机,但这个自动选中的过程,不将在线车辆卡片放置到顶层。如果用户周围没有其他,则展示默认图。
This commit is contained in:
@@ -7,6 +7,7 @@ import android.text.TextUtils;
|
||||
import android.view.animation.BounceInterpolator;
|
||||
import android.view.animation.OvershootInterpolator;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.map.MogoLatLng;
|
||||
import com.mogo.map.location.MogoLocation;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
@@ -23,6 +24,7 @@ import com.mogo.module.common.entity.MarkerResponse;
|
||||
import com.mogo.module.common.entity.MarkerShareMusic;
|
||||
import com.mogo.module.common.entity.MarkerShowEntity;
|
||||
import com.mogo.module.service.MarkerServiceHandler;
|
||||
import com.mogo.module.service.MogoServiceProvider;
|
||||
import com.mogo.module.service.ServiceConst;
|
||||
import com.mogo.module.service.Utils;
|
||||
import com.mogo.module.service.datamanager.MogoDataHandler;
|
||||
@@ -49,17 +51,21 @@ import java.util.Map;
|
||||
*/
|
||||
public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessageListener<MarkerResponse> {
|
||||
private static final String TAG = "MapMarkerManager";
|
||||
// 第一次请求到地图的Marker数据
|
||||
private boolean isFirstMarker = false;
|
||||
// 是否同步在线数据给在线卡片, ACC ON 的标记记录
|
||||
private boolean isACC_ON = false;
|
||||
private boolean isSynchronousOnLineData = true;
|
||||
// 是否选中在线卡片及气泡,语音搜索触发
|
||||
private boolean isCheckOnLineData = false;
|
||||
|
||||
private static Context mContext;
|
||||
private static IMogoMarker lastMarker;
|
||||
private static MapMarkerManager mMarkerManager;
|
||||
|
||||
private static String mLastHighLightModule = "";
|
||||
|
||||
// 记录其它已经缩小的Marker
|
||||
public static ArrayList<String> alreadySmallMarker = new ArrayList<>();
|
||||
IMogoMarker nearlyMogoMarker = null;
|
||||
// 距离用户最近的Marker
|
||||
private IMogoMarker nearlyMogoMarker = null;
|
||||
|
||||
private MapMarkerManager() {
|
||||
}
|
||||
@@ -90,16 +96,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
|
||||
@Override
|
||||
public void onSwitched(int position, String moduleName) {
|
||||
Logger.e(TAG, "======moduleName:" + moduleName);
|
||||
if (!isACC_ON) {
|
||||
isACC_ON = true;
|
||||
MogoServiceProvider mMogoServiceProvider = (MogoServiceProvider) ARouter.getInstance().build(ServiceConst.PATH_REFRESH_STRATEGY).navigation();
|
||||
// 刷新 Marker
|
||||
mMogoServiceProvider.refreshStrategy();
|
||||
}
|
||||
Logger.e(TAG, "当前C位卡片:" + moduleName);
|
||||
highlightedMarker(moduleName, false);
|
||||
mLastHighLightModule = moduleName;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ACC ON 的时候重置为true
|
||||
public void setFirstMarker(boolean firstMarker) {
|
||||
isFirstMarker = firstMarker;
|
||||
// ACC ON 的时候重置为true,ACC OFF 设置为 false
|
||||
public void setCheckOnLineData(boolean checkOnLineData) {
|
||||
isACC_ON = checkOnLineData;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,8 +238,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
}
|
||||
mogoMarker.setToTop();
|
||||
try {
|
||||
mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f,1000, new BounceInterpolator( ) );
|
||||
} catch( Exception e ){
|
||||
mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator());
|
||||
} catch (Exception e) {
|
||||
Logger.e(TAG, e, "error.");
|
||||
}
|
||||
}
|
||||
@@ -247,7 +259,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f,300, new OvershootInterpolator( ) );
|
||||
mogoMarker.startScaleAnimation(1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator());
|
||||
} catch (Exception e) {
|
||||
Logger.e(TAG, e, "error.");
|
||||
}
|
||||
@@ -310,7 +322,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
markerCardResult.getDataType().contains(ServiceConst.CARD_TYPE_USER_DATA)) {
|
||||
MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA);
|
||||
MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA);
|
||||
isFirstMarker = true;
|
||||
isCheckOnLineData = true;
|
||||
} else {
|
||||
// 清空所有地图上绘制的Marker
|
||||
MarkerServiceHandler.getMarkerManager().removeMarkers();
|
||||
@@ -362,7 +374,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Logger.d("点之间距离", "距离当前车辆位置最近的距离为:" + nearlyDistance);
|
||||
Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance);
|
||||
fillNumberTrackEventBody(array, 3, onlineCarList.size());
|
||||
}
|
||||
|
||||
@@ -451,12 +463,26 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
|
||||
try {
|
||||
// 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker
|
||||
if (isFirstMarker) {
|
||||
if (isCheckOnLineData) {
|
||||
if (nearlyMogoMarker != null) {
|
||||
Logger.w(TAG, "ACC ON,或者语音搜索触发,默认选中最近的在线车辆nearlyMogoMarker:" + nearlyMogoMarker);
|
||||
Logger.w(TAG, "语音搜索触发,默认选中最近的在线车辆:" + nearlyMogoMarker);
|
||||
// 移动地图到指定位置
|
||||
MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false);
|
||||
MarkerServiceHandler.getMapUIController().moveToCenter(nearlyMogoMarker.getPosition());
|
||||
|
||||
onMarkerClicked(nearlyMogoMarker);
|
||||
MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
|
||||
isFirstMarker = false;
|
||||
isCheckOnLineData = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isACC_ON && isSynchronousOnLineData) {
|
||||
isSynchronousOnLineData = false;
|
||||
if (nearlyMogoMarker != null) {
|
||||
Logger.w(TAG, "ACC ON 触发,将附近的在线车辆数据同步给卡片:" + nearlyMogoMarker);
|
||||
openMarker(nearlyMogoMarker);
|
||||
// 将数据同步给在线用户卡片
|
||||
MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_USER_DATA, nearlyMogoMarker);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -557,8 +583,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
|
||||
@Override
|
||||
public void onMsgReceived(final MarkerResponse response) {
|
||||
Logger.e(TAG, "MarkerResponse======" + response);
|
||||
if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) {
|
||||
Logger.e(TAG, "接收到了地图大而全数据");
|
||||
if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() && isSynchronousOnLineData) {
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
handler.post(new Runnable() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user