From 92035ddc0be45f176ba99dad5701086de2ba1d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 26 Feb 2020 19:55:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=A8=E7=BA=BF=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=B1=95=E7=A4=BA=E9=80=BB=E8=BE=91=20=20=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E8=BD=A6=E8=BE=86=E6=9C=AC=E6=9C=9F=E8=A6=81=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E3=80=8C=E8=BD=A6=E6=9C=BA=20acc=20on=20=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E5=B1=95=E7=A4=BA=E4=B8=80=E4=B8=AA=E9=99=84=E8=BF=91?= =?UTF-8?q?=E8=BD=A6=E4=B8=BB=E4=BF=A1=E6=81=AF=E3=80=8D=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E6=8F=8F=E8=BF=B0=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户 acc on后,在线车辆卡片自动选中最近的一个车机,但这个自动选中的过程,不将在线车辆卡片放置到顶层。如果用户周围没有其他,则展示默认图。 --- .../service/marker/MapMarkerManager.java | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 58185cda2b..ba78988221 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -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 { 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 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