From ef4629136e7f1703c56e6a6ce1039a3c5b7475be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 20 Apr 2020 16:42:16 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=9C=B0=E5=9B=BE=E4=B8=AD=E5=BF=83=E7=9A=84V2X?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/common/map/MapCenterPointStrategy.java | 7 +++++++ .../src/main/java/com/mogo/module/common/map/Scene.java | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index 84e1088f63..2fde55545b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -61,6 +61,13 @@ public class MapCenterPointStrategy { categorySearch.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) ); categorySearch.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.733594D, 0.596759D ) ); sStrategies.put( Scene.CATEGORY_SEARCH, categorySearch ); + + + // V2X,场景视图右边 + Map< Integer, MapCenterPoint > categoryV2XEvent = new HashMap<>(); + categoryV2XEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.54D ) ); + categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.558737D ) ); + sStrategies.put( Scene.CATEGORY_V2X_EVENT, categoryV2XEvent ); } public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java index 4def37a007..c37810ae50 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java @@ -37,4 +37,9 @@ public interface Scene { * 分类搜索 */ int CATEGORY_SEARCH = 5; + + /** + * V2X触发了预警场景 + */ + int CATEGORY_V2X_EVENT = 6; } From db6ffecfb439a5d6cc508583fb3f2ffe36809f73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 20 Apr 2020 17:02:35 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=9C=B0=E5=9B=BE=E4=B8=AD=E5=BF=83=E7=9A=84V2X?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../com/mogo/module/common/map/MapCenterPointStrategy.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index f8d5fe5ffb..c14951ad31 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ MOGO_CONNECTION_VERSION=1.0.3.8 MOGO_MODULE_APPS_VERSION=1.0.3.8 MOGO_MODULE_NAVI_VERSION=1.0.3.8 MOGO_MODULE_SHARE_VERSION=1.0.3.8 -MOGO_MODULE_COMMON_VERSION=1.0.3.8 +MOGO_MODULE_COMMON_VERSION=1.0.3.9 MOGO_MODULE_MAIN_VERSION=1.0.3.8 MOGO_MODULE_MAP_VERSION=1.0.3.8 MOGO_MODULE_SERVICE_VERSION=1.0.3.8 diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index 2fde55545b..03d6f72ae3 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -65,8 +65,8 @@ public class MapCenterPointStrategy { // V2X,场景视图右边 Map< Integer, MapCenterPoint > categoryV2XEvent = new HashMap<>(); - categoryV2XEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.54D ) ); - categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.558737D ) ); + categoryV2XEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.7D ) ); + categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.65D ) ); sStrategies.put( Scene.CATEGORY_V2X_EVENT, categoryV2XEvent ); } From 05e811e7d5739a2cbba77d4c28810b5b583fc885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 20 Apr 2020 17:07:43 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=9C=B0=E5=9B=BE=E4=B8=AD=E5=BF=83=E7=9A=84V2X?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c14951ad31..f8d5fe5ffb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ MOGO_CONNECTION_VERSION=1.0.3.8 MOGO_MODULE_APPS_VERSION=1.0.3.8 MOGO_MODULE_NAVI_VERSION=1.0.3.8 MOGO_MODULE_SHARE_VERSION=1.0.3.8 -MOGO_MODULE_COMMON_VERSION=1.0.3.9 +MOGO_MODULE_COMMON_VERSION=1.0.3.8 MOGO_MODULE_MAIN_VERSION=1.0.3.8 MOGO_MODULE_MAP_VERSION=1.0.3.8 MOGO_MODULE_SERVICE_VERSION=1.0.3.8 From 678dd2b8a0b887a0815ae4a1863824d684ad6ae3 Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Mon, 20 Apr 2020 18:30:33 +0800 Subject: [PATCH 4/6] =?UTF-8?q?smooth=20move=20=EF=BC=88using=20test=20dat?= =?UTF-8?q?a=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../impl/amap/marker/AMapMarkerWrapper.java | 31 + .../java/com/mogo/map/marker/IMogoMarker.java | 11 + .../module/common/entity/MarkerCarPois.java | 41 ++ .../module/common/entity/MarkerOnlineCar.java | 33 +- .../module/common/entity/MarkerResponse.java | 16 +- .../com/mogo/module/service/MogoServices.java | 11 +- .../service/marker/MapMarkerManager.java | 695 ++++++++++-------- .../service/network/RefreshApiService.java | 6 + .../module/service/network/RefreshBody.java | 1 + .../service/network/RefreshCallback.java | 4 +- .../module/service/network/RefreshModel.java | 54 +- 12 files changed, 583 insertions(+), 322 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 2dc54c489f..707ee6e613 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java index 6983bd6b5c..669c4552a6 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java @@ -15,7 +15,9 @@ import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.animation.Animation; import com.amap.api.maps.model.animation.ScaleAnimation; import com.amap.api.maps.model.animation.TranslateAnimation; +import com.amap.api.maps.utils.overlay.MovingPointOverlay; import com.mogo.map.MogoLatLng; +import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; @@ -26,6 +28,7 @@ import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; import java.util.ArrayList; +import java.util.List; import java.util.Observable; import java.util.Observer; @@ -49,6 +52,8 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { private MogoMarkerOptions mMogoMarkerOptions; private String mOwner; + private MovingPointOverlay mMovingPointOverlay; + public AMapMarkerWrapper( Marker marker, MogoMarkerOptions mogoMarkerOptions ) { this.mMarker = marker; if ( marker != null ) { @@ -338,4 +343,30 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { mMarker.setClickable( clickable ); } } + + @Override + public void startSmooth(List points,int duration) { + if (mMarker != null && points.size() > 0){ + List p = new ArrayList<>(); + for (int i = 0; i < points.size(); i++) { + p.add(ObjectUtils.fromMogo2(points.get(i))); + } + mMovingPointOverlay = new MovingPointOverlay(AMapWrapper.getAMap(),mMarker); + mMovingPointOverlay.setPoints(p); + mMovingPointOverlay.setTotalDuration(duration); + mMovingPointOverlay.setVisible(true); + mMovingPointOverlay.setMoveListener(new MovingPointOverlay.MoveListener() { + @Override + public void move(double v) { + + } + }); + mMovingPointOverlay.startSmoothMove(); + } + } + + @Override + public void stopSmooth() { + + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java index 493044773b..1ab2213a19 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java @@ -8,6 +8,7 @@ import android.view.animation.Interpolator; import com.mogo.map.MogoLatLng; import java.util.ArrayList; +import java.util.List; /** * @author congtaowang @@ -252,4 +253,14 @@ public interface IMogoMarker { * @param clickable */ void setClickable( boolean clickable ); + + /** + * 开始平滑移动 + * + * @param points 坐标点 + * @param duration 时长 + */ + void startSmooth(List points, int duration); + + void stopSmooth(); } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java new file mode 100644 index 0000000000..0a0c84c94c --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java @@ -0,0 +1,41 @@ +package com.mogo.module.common.entity; + +/** + * Created by ihoudf on 2020-04-16. + **/ +public class MarkerCarPois { + + private double[] coordinates; + private double angle; // 车头角度 + private String adcode; + + public double[] getCoordinates() { + return coordinates; + } + + public void setCoordinates(double[] coordinates) { + this.coordinates = coordinates; + } + + public double getAngle() { + return angle; + } + + public void setAngle(double angle) { + this.angle = angle; + } + + public String getAdcode() { + return adcode; + } + + public void setAdcode(String adcode) { + this.adcode = adcode; + } + + @Override + public String toString() { + return "MarkerCarPois{" + "coordinates=" + coordinates + ", angle=" + angle + ", adcode" + + "='" + adcode + '\'' + '}'; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerOnlineCar.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerOnlineCar.java index c296117458..c6376414ff 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerOnlineCar.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerOnlineCar.java @@ -1,10 +1,9 @@ - package com.mogo.module.common.entity; import java.io.Serializable; import java.util.List; -@SuppressWarnings("unused") + public class MarkerOnlineCar implements Serializable { private String type;//卡片类型 @@ -12,11 +11,28 @@ public class MarkerOnlineCar implements Serializable { private Boolean isFocus;//isFocus":"0-未关注,1-关注 private MarkerUserInfo userInfo;//用户数据 private MarkerCarInfo carInfo;//车辆数据 + private List pois;//车辆路线 private MarkerDynamicData dynamicData;//动态数据 private MarkerHobbyDatum hobbyData;//爱好数据集合 private List activitiesScope;//活动范围数据集合 private int compatibility;//匹配度 + public Boolean getFocus() { + return isFocus; + } + + public void setFocus(Boolean focus) { + isFocus = focus; + } + + public List getPois() { + return pois; + } + + public void setPois(List pois) { + this.pois = pois; + } + public List getActivitiesScope() { return activitiesScope; } @@ -91,16 +107,7 @@ public class MarkerOnlineCar implements Serializable { @Override public String toString() { - return "MarkerOnlineCar{" + - "activitiesScope=" + activitiesScope + - ", carInfo=" + carInfo + - ", compatibility='" + compatibility + '\'' + - ", dynamicData=" + dynamicData + - ", hobbyData=" + hobbyData + - ", isFocus=" + isFocus + - ", location=" + location + - ", type='" + type + '\'' + - ", userInfo=" + userInfo + - '}'; + return "MarkerOnlineCar{" + "type='" + type + '\'' + ", location=" + location + ", " + + "isFocus=" + isFocus + ", userInfo=" + userInfo + ", carInfo=" + carInfo + ", " + "pois=" + pois + ", dynamicData=" + dynamicData + ", hobbyData=" + hobbyData + "," + " activitiesScope=" + activitiesScope + ", compatibility=" + compatibility + '}'; } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerResponse.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerResponse.java index 7fc61bb9e3..3b62289a92 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerResponse.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerResponse.java @@ -2,13 +2,15 @@ package com.mogo.module.common.entity; +import com.mogo.commons.data.BaseData; + import java.io.Serializable; @SuppressWarnings("unused") -public class MarkerResponse implements Serializable { +public class MarkerResponse extends BaseData implements Serializable { - private int code; - private String msg; +// private int code; +// private String msg; private MarkerCardResult result; private String sign; @@ -32,6 +34,7 @@ public class MarkerResponse implements Serializable { return result; } + public void setResult(MarkerCardResult result) { this.result = result; } @@ -46,11 +49,6 @@ public class MarkerResponse implements Serializable { @Override public String toString() { - return "MarkerResponse{" + - "code=" + code + - ", msg='" + msg + '\'' + - ", result=" + result + - ", sign='" + sign + '\'' + - '}'; + return "MarkerResponse{" + "result=" + result + ", sign='" + sign + '\'' + ", code=" + code + ", msg='" + msg + '\'' + '}'; } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 5595cbabe8..b1c9b4c84b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -228,10 +228,11 @@ public class MogoServices implements IMogoMapListener, */ private RefreshCallback mCustomRefreshCallback = new RefreshCallback() { @Override - public void onSuccess() { + public void onSuccess(Object o) { mLoopRequest = false; // 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略 mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true ); + } @Override @@ -245,7 +246,7 @@ public class MogoServices implements IMogoMapListener, */ private RefreshCallback mAutoRefreshCallback = new RefreshCallback() { @Override - public void onSuccess() { + public void onSuccess(Object o) { mLoopRequest = false; Logger.d( TAG, "request Success." ); invokeAutoRefreshStrategy(); @@ -342,6 +343,8 @@ public class MogoServices implements IMogoMapListener, if ( msg.obj instanceof RefreshObject ) { RefreshObject ro = ( ( RefreshObject ) msg.obj ); mRefreshModel.refreshData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback ); + MapMarkerManager.getInstance().getOnlineCarData(ro.mLonLat); + Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount ); } } @@ -643,7 +646,7 @@ public class MogoServices implements IMogoMapListener, } else { // 搜索后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(); + mAutoRefreshCallback.onSuccess(null); } } break; @@ -697,7 +700,7 @@ public class MogoServices implements IMogoMapListener, refreshStrategy(); // ADAS关闭后,打开打点策略 if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(); + mAutoRefreshCallback.onSuccess(null); } } 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 2828c1b12c..08304c9da5 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 @@ -12,6 +12,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; +import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; @@ -24,6 +25,8 @@ import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.Utils; +import com.mogo.module.service.network.RefreshCallback; +import com.mogo.module.service.network.RefreshModel; import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; @@ -49,8 +52,7 @@ import java.util.Map; * version: 1.0 */ public class MapMarkerManager implements IMogoMarkerClickListener, - IMogoOnMessageListener< MarkerResponse >, - IMogoCardChangedListener, + IMogoOnMessageListener, IMogoCardChangedListener, IMogoBizActionDoneListener { private static final String TAG = "MapMarkerManager"; // 是否选中在线卡片及气泡,语音搜索触发 @@ -63,20 +65,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; // 记录其它已经缩小的Marker - public ArrayList< String > alreadySmallMarker = new ArrayList<>(); + public ArrayList alreadySmallMarker = new ArrayList<>(); + // 存储所有汽车marker + public ArrayList carMarkers = new ArrayList<>(); // 距离用户最近的Marker private IMogoMarker mNearlyMarker = null; // 记录上次请求数据,切换卡片时做数据处理 private MarkerCardResult mLastDataResult; private boolean mIsMarkerClicked = false; + private RefreshModel mRefreshModel; + private MogoLatLng mCarLatLng; + private int mCarSmoothDuration = 5; private MapMarkerManager() { } public static synchronized MapMarkerManager getInstance() { - synchronized ( MapMarkerManager.class ) { - if ( mMarkerManager == null ) { + synchronized (MapMarkerManager.class) { + if (mMarkerManager == null) { mMarkerManager = new MapMarkerManager(); } } @@ -89,36 +96,38 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param context */ - public void init( Context context ) { + public void init(Context context) { mContext = context; + mRefreshModel = new RefreshModel(mContext); + // 长连接 - MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); - MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this ); - MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); + MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener(401001, this); + MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( + "LAUNCHER_MARKER_MODULE", this); + MarkerServiceHandler.getActionManager().registerBizActionDoneListener(this); } // ACC ON 的时候重置为true,ACC OFF 设置为 false // 保留 - 外部模块调用 - public void setCheckOn( boolean checkOnLineData ) { - Logger.e( TAG, "do not invoke anymore." ); + public void setCheckOn(boolean checkOnLineData) { + Logger.e(TAG, "do not invoke anymore."); } @Override - public void onSwitched( int position, String moduleName ) { - Logger.d( TAG, "当前C位卡片:" + moduleName ); - if ( ( TextUtils.isEmpty( mCurrentModuleName ) - || TextUtils.equals( mCurrentModuleName, ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) ) - && mIsMarkerClicked ) { + public void onSwitched(int position, String moduleName) { + Logger.d(TAG, "当前C位卡片:" + moduleName); + if ((TextUtils.isEmpty(mCurrentModuleName) || TextUtils.equals(mCurrentModuleName, + ServiceConst.CARD_TYPE_BUSINESS_OPERATION)) && mIsMarkerClicked) { mIsMarkerClicked = false; // 在广告位(默认位置)点击marker造成卡片切换的,还是现实全部marker 【需求:os2.0.2-2.5-4】 - highlightedMarker( moduleName, false ); + highlightedMarker(moduleName, false); mCurrentModuleName = moduleName; } else { mCurrentModuleName = moduleName; - runOnTargetThread( () -> { + runOnTargetThread(() -> { MarkerServiceHandler.getMarkerManager().removeMarkers(); - drawMarkerByCurrentType( mLastDataResult ); - } ); + drawMarkerByCurrentType(mLastDataResult); + }); } } @@ -126,58 +135,58 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 地图上的Marker点击回调 */ @Override - public boolean onMarkerClicked( IMogoMarker marker ) { + public boolean onMarkerClicked(IMogoMarker marker) { mIsMarkerClicked = true; - Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker ); + Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker); try { - boolean result = switchMarkerOpenStatus( marker ); - if ( !result ) { + boolean result = switchMarkerOpenStatus(marker); + if (!result) { return false; } // 数据统计代码 - final Map< String, Object > properties = new HashMap<>(); - switch ( mLastCheckMarker.getOwner() ) { + final Map properties = new HashMap<>(); + switch (mLastCheckMarker.getOwner()) { case ServiceConst.CARD_TYPE_CARS_CHATTING: - properties.put( "type", 3 ); + properties.put("type", 3); break; case ServiceConst.CARD_TYPE_USER_DATA: - properties.put( "type", 5 ); + properties.put("type", 5); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - properties.put( "type", 2 ); + properties.put("type", 2); break; case ServiceConst.CARD_TYPE_NOVELTY: - MarkerShowEntity showEntity = ( MarkerShowEntity ) mLastCheckMarker.getObject(); + MarkerShowEntity showEntity = (MarkerShowEntity) mLastCheckMarker.getObject(); Object bindObj = showEntity.getBindObj(); - if ( bindObj instanceof MarkerNoveltyInfo ) { - switch ( ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ) { + if (bindObj instanceof MarkerNoveltyInfo) { + switch (((MarkerNoveltyInfo) bindObj).getPoiType()) { case MarkerPoiTypeEnum.GAS_STATION: - properties.put( "type", 4 ); + properties.put("type", 4); break; case MarkerPoiTypeEnum.TRAFFIC_CHECK: - properties.put( "type", 8 ); + properties.put("type", 8); break; case MarkerPoiTypeEnum.ROAD_CLOSED: - properties.put( "type", 7 ); + properties.put("type", 7); break; case MarkerPoiTypeEnum.SHOP_DISCOUNT: - properties.put( "type", 9 ); + properties.put("type", 9); break; case MarkerPoiTypeEnum.FOURS_4S: - properties.put( "type", 10 ); + properties.put("type", 10); break; } } break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - properties.put( "type", 6 ); + properties.put("type", 6); break; } - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); + MarkerServiceHandler.getMogoAnalytics().track("Launcher_Icon_Click", properties); - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } return false; @@ -189,99 +198,103 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param marker * @return */ - private boolean switchMarkerOpenStatus( IMogoMarker marker ) { - if ( mLastCheckMarker != null ) { + private boolean switchMarkerOpenStatus(IMogoMarker marker) { + if (mLastCheckMarker != null) { // 判断点击的是否是同一个 - if ( marker.equals( mLastCheckMarker ) ) { - Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker ); + if (marker.equals(mLastCheckMarker)) { + Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker); return false; } // 将上次选中 Marker 设置为未选中状态 - closeMarker( mLastCheckMarker ); + closeMarker(mLastCheckMarker); } // 将当前的Marker设置为选中 - openMarker( marker ); + openMarker(marker); return true; } // 对指定类型高亮处理 - public synchronized void highlightedMarker( final String typeTag ) { - highlightedMarker( typeTag, false ); + public synchronized void highlightedMarker(final String typeTag) { + highlightedMarker(typeTag, false); } - public synchronized void highlightedMarker( final String typeTag, final boolean netDataRefresh ) { + public synchronized void highlightedMarker(final String typeTag, final boolean netDataRefresh) { try { - Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName ); - if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, typeTag ) && !netDataRefresh ) { + Logger.e(TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName); + if (!TextUtils.isEmpty(mCurrentModuleName) && TextUtils.equals(mCurrentModuleName, + typeTag) && !netDataRefresh) { return; } // 从已经缩小的记录删除 - alreadySmallMarker.remove( typeTag ); - List< IMogoMarker > currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers( typeTag ); + alreadySmallMarker.remove(typeTag); + List currentHighLightList = + MarkerServiceHandler.getMarkerManager().getMarkers(typeTag); - if ( currentHighLightList == null || currentHighLightList.size() == 0 ) { + if (currentHighLightList == null || currentHighLightList.size() == 0) { alreadySmallMarker.clear(); // 放大所有的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - setMarkersBig( lastHighLightList.get( markerName ) ); + Map> lastHighLightList = + MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for (String markerName : lastHighLightList.keySet()) { + setMarkersBig(lastHighLightList.get(markerName)); } } else { // 缩小其他的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - if ( !markerName.equals( typeTag ) ) { - if ( !alreadySmallMarker.contains( markerName ) ) { - alreadySmallMarker.add( markerName ); - setMarkersSmall( lastHighLightList.get( markerName ) ); + Map> lastHighLightList = + MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for (String markerName : lastHighLightList.keySet()) { + if (!markerName.equals(typeTag)) { + if (!alreadySmallMarker.contains(markerName)) { + alreadySmallMarker.add(markerName); + setMarkersSmall(lastHighLightList.get(markerName)); } } } // 将当前卡片选中的气泡放大 - setMarkersBig( currentHighLightList ); + setMarkersBig(currentHighLightList); } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } - private static void setMarkersBig( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { + private static void setMarkersBig(List markers) { + if (markers == null || markers.isEmpty()) { return; } - for ( IMogoMarker mogoMarker : markers ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { + for (IMogoMarker mogoMarker : markers) { + if (mogoMarker == null || mogoMarker.isDestroyed()) { continue; } try { - mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator()); + } catch (Exception e) { + Logger.e(TAG, e, "error."); } } } - private static void setMarkersSmall( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { + private static void setMarkersSmall(List markers) { + if (markers == null || markers.isEmpty()) { return; } - for ( IMogoMarker mogoMarker : markers ) { - smallMarker( mogoMarker ); + for (IMogoMarker mogoMarker : markers) { + smallMarker(mogoMarker); } } - private static void smallMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { + private static void smallMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null || mogoMarker.isDestroyed()) { return; } try { - mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + mogoMarker.startScaleAnimation(1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator()); + } catch (Exception e) { + Logger.e(TAG, e, "error."); } } @@ -290,83 +303,85 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param marker 要关闭的Marker */ - public synchronized void closeMarkerSelect( IMogoMarker marker ) { + public synchronized void closeMarkerSelect(IMogoMarker marker) { // 将上次选中 Marker 设置为未选中状态 - if ( marker != null ) { - Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker ); - closeMarker( marker ); + if (marker != null) { + Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker); + closeMarker(marker); mLastCheckMarker = null; } } // 展开气泡 - private void openMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null ) { + private void openMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null) { return; } - if ( mLastCheckMarker != null ) { - closeMarker( mLastCheckMarker ); + if (mLastCheckMarker != null) { + closeMarker(mLastCheckMarker); } mLastCheckMarker = mogoMarker; Object object = mogoMarker.getObject(); - if ( object != null ) { - MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; - markerShowEntity.setChecked( true ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); - mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); + if (object != null) { + MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; + markerShowEntity.setChecked(true); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + mogoMarker.getMogoMarkerOptions()); + mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); mogoMarker.setToTop(); } } // 折叠气泡 - private void closeMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null ) { + private void closeMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null) { return; } Object object = mogoMarker.getObject(); - if ( object != null ) { - MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; - markerShowEntity.setChecked( false ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); - mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); + if (object != null) { + MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; + markerShowEntity.setChecked(false); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + mogoMarker.getMogoMarkerOptions()); + mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); } } // 绘制Marker - public synchronized void drawMapMarker( MarkerResponse response ) { + public synchronized void drawMapMarker(MarkerResponse response) { - if ( response == null || response.getResult() == null ) { + if (response == null || response.getResult() == null) { return; } - if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { return; } // 解析不同的Marker类型,然后对应的进行绘制 - Logger.d( TAG, "draw marker" ); + Logger.d(TAG, "draw marker"); mLastDataResult = response.getResult(); - UiThreadHandler.post( () -> { + UiThreadHandler.post(() -> { dispatchDataToBiz(); - } ); + }); // 语音触发的在线车辆搜索,采用增量的形式绘制 - if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) { - MarkerServiceHandler.getMarkerManager().removeMarkers( ServiceConst.CARD_TYPE_USER_DATA ); - MarkerServiceHandler.getMogoCardManager().switch2( ServiceConst.CARD_TYPE_USER_DATA ); + if (mIsAISearchOnlineData = isOnlineCarDataOnly(mLastDataResult)) { + MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA); + MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA); } else { mLastCheckMarker = null; // 清空所有地图上绘制的Marker MarkerServiceHandler.getMarkerManager().removeMarkers(); } - drawMarkerByCurrentType( mLastDataResult ); + drawMarkerByCurrentType(mLastDataResult); // 同步新绘制的气泡状态 alreadySmallMarker.clear(); // highlightedMarker( mCurrentModuleName, true ); - trackData( mLastDataResult ); + trackData(mLastDataResult); } /** @@ -375,11 +390,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerCardResult * @return */ - private boolean isOnlineCarDataOnly( MarkerCardResult markerCardResult ) { - if ( markerCardResult != null && - markerCardResult.getDataType() != null && - markerCardResult.getDataType().size() == 1 && - markerCardResult.getDataType().contains( ServiceConst.CARD_TYPE_USER_DATA ) ) { + private boolean isOnlineCarDataOnly(MarkerCardResult markerCardResult) { + if (markerCardResult != null && markerCardResult.getDataType() != null && markerCardResult.getDataType().size() == 1 && markerCardResult.getDataType().contains(ServiceConst.CARD_TYPE_USER_DATA)) { return true; } return false; @@ -390,42 +402,42 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) { + private synchronized void drawMarkerByCurrentType(MarkerCardResult markerCardResult) { - if ( markerCardResult == null ) { + if (markerCardResult == null) { return; } - if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { return; } - if ( TextUtils.isEmpty( mCurrentModuleName ) ) { + if (TextUtils.isEmpty(mCurrentModuleName)) { // 默认大而全 mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; } - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); +// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); - switch ( mCurrentModuleName ) { + switch (mCurrentModuleName) { case ServiceConst.CARD_TYPE_BUSINESS_OPERATION: - drawAllMarker( markerCardResult ); + drawAllMarker(markerCardResult); break; case ServiceConst.CARD_TYPE_NOVELTY: - drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: - drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; } } @@ -435,16 +447,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void drawAllMarker( MarkerCardResult markerCardResult ) { - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); + private void drawAllMarker(MarkerCardResult markerCardResult) { + List onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); - drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); - drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL ); - drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_ALL ); - drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL ); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); + drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL); + drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_ALL); + drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL); } /** @@ -452,61 +464,92 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param onlineCarList */ - private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList, int maxAmount ) { + private void drawOnlineCarMarkers(List onlineCarList, int maxAmount) { // 将数据同步给在线车辆,避免每次 perform 的时候去拉取,造成消耗 - if ( onlineCarList == null || onlineCarList.isEmpty() ) { + if (onlineCarList == null || onlineCarList.isEmpty()) { return; } + + for (int i = 0; i < carMarkers.size(); i++) { + IMogoMarker marker = carMarkers.get(i); + marker.destroy(); + } + double nearlyDistance = Float.MAX_VALUE; - int size = getAppropriateSize( maxAmount, onlineCarList ); - for ( int i = 0; i < size; i++ ) { - MarkerOnlineCar markerOnlineCar = onlineCarList.get( i ); + int size = getAppropriateSize(maxAmount, onlineCarList); + for (int i = 0; i < size; i++) { + MarkerOnlineCar markerOnlineCar = onlineCarList.get(i); MarkerLocation markerLocation = markerOnlineCar.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerOnlineCar ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerOnlineCar.getType() ); - markerShowEntity.setTextContent( markerOnlineCar.getUserInfo().getUserName() ); - markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() ); + markerShowEntity.setBindObj(markerOnlineCar); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerOnlineCar.getType()); + + if (markerOnlineCar.getCarInfo() != null) { + markerShowEntity.setTextContent(markerOnlineCar.getUserInfo().getUserName()); + markerShowEntity.setIconUrl(markerOnlineCar.getUserInfo().getUserHead()); + } + + IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); + + carMarkers.add(iMogoMarker); + List poisList = markerOnlineCar.getPois(); + if (poisList.size() > 0){ + List points = new ArrayList<>(); + + if (poisList.size() == 1){ + points.add(new MogoLatLng(markerLocation.getLat(),markerLocation.getLon())); + } + for (int j = 0; j < poisList.size(); j++) { + MarkerCarPois pois = poisList.get(j); + double lat = pois.getCoordinates()[1]; + double lng = pois.getCoordinates()[0]; + points.add(new MogoLatLng(lat,lng)); + + } + iMogoMarker.startSmooth(points,mCarSmoothDuration); + } + - IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity ); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { // 当前车辆的位置 - MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); + MogoLocation currentLocation = + MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); // 计算车辆距离指定气泡的距离 - float calculateDistance = Utils.calculateLineDistance( - new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ), - new MogoLatLng( currentLocation.getLatitude(), currentLocation.getLongitude() ) - ); + float calculateDistance = + Utils.calculateLineDistance(new MogoLatLng(markerLocation.getLat(), + markerLocation.getLon()), + new MogoLatLng(currentLocation.getLatitude(), + currentLocation.getLongitude())); // 进行比较,保留最近的一个数据 - if ( calculateDistance < nearlyDistance ) { + if (calculateDistance < nearlyDistance) { nearlyDistance = calculateDistance; mNearlyMarker = iMogoMarker; } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } - Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance ); + Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance); try { // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker - if ( mIsAISearchOnlineData ) { - if ( mNearlyMarker != null ) { - Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker ); + if (mIsAISearchOnlineData) { + if (mNearlyMarker != null) { + Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker); // 移动地图到指定位置 - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false ); - MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() ); - onMarkerClicked( mNearlyMarker ); - MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker ); + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false); + MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMarker.getPosition()); + onMarkerClicked(mNearlyMarker); + MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMarker); mIsAISearchOnlineData = false; } } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } @@ -516,24 +559,24 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param exploreWayList */ - private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList, int maxAmount ) { + private void drawRoadConditionMarker(List exploreWayList, int maxAmount) { // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗 - if ( exploreWayList == null || exploreWayList.isEmpty() ) { + if (exploreWayList == null || exploreWayList.isEmpty()) { return; } - int size = getAppropriateSize( maxAmount, exploreWayList ); - for ( int i = 0; i < size; i++ ) { - MarkerExploreWay markerExploreWay = exploreWayList.get( i ); - if ( !markerExploreWay.getCanLive() ) { + int size = getAppropriateSize(maxAmount, exploreWayList); + for (int i = 0; i < size; i++) { + MarkerExploreWay markerExploreWay = exploreWayList.get(i); + if (!markerExploreWay.getCanLive()) { MarkerLocation markerLocation = markerExploreWay.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerExploreWay ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerExploreWay.getType() ); - markerShowEntity.setTextContent( markerExploreWay.getAddr() ); + markerShowEntity.setBindObj(markerExploreWay); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerExploreWay.getType()); + markerShowEntity.setTextContent(markerExploreWay.getAddr()); - drawMapMarker( markerShowEntity ); + drawMapMarker(markerShowEntity); } } } @@ -543,22 +586,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param shareMusicList */ - private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList, int maxAmount ) { - if ( shareMusicList == null ) { + private void drawShareMusicMarker(List shareMusicList, int maxAmount) { + if (shareMusicList == null) { return; } - int size = getAppropriateSize( maxAmount, shareMusicList ); - for ( int i = 0; i < size; i++ ) { - MarkerShareMusic markerShareMusic = shareMusicList.get( i ); + int size = getAppropriateSize(maxAmount, shareMusicList); + for (int i = 0; i < size; i++) { + MarkerShareMusic markerShareMusic = shareMusicList.get(i); MarkerLocation markerLocation = markerShareMusic.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerShareMusic ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerShareMusic.getType() ); - markerShowEntity.setTextContent( markerShareMusic.getMediaName() ); - markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() ); + markerShowEntity.setBindObj(markerShareMusic); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerShareMusic.getType()); + markerShowEntity.setTextContent(markerShareMusic.getMediaName()); + markerShowEntity.setIconUrl(markerShareMusic.getMediaImg()); - drawMapMarker( markerShowEntity ); + drawMapMarker(markerShowEntity); } } @@ -567,20 +610,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param noveltyInfoList */ - private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList, int maxAmount ) { - if ( noveltyInfoList == null ) { + private void drawNoveltyMarker(List noveltyInfoList, int maxAmount) { + if (noveltyInfoList == null) { return; } - int size = getAppropriateSize( maxAmount, noveltyInfoList ); - for ( int i = 0; i < size; i++ ) { - MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get( i ); + int size = getAppropriateSize(maxAmount, noveltyInfoList); + for (int i = 0; i < size; i++) { + MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get(i); MarkerLocation markerLocation = noveltyInfo.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( noveltyInfo ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( noveltyInfo.getType() ); - markerShowEntity.setTextContent( noveltyInfo.getLocation().getAddress() ); - drawMapMarker( markerShowEntity ); + markerShowEntity.setBindObj(noveltyInfo); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(noveltyInfo.getType()); + markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress()); + drawMapMarker(markerShowEntity); } } @@ -589,11 +632,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param list * @return */ - private int getAppropriateSize( int maxAmount, List list ) { - if ( list == null ) { + private int getAppropriateSize(int maxAmount, List list) { + if (list == null) { return 0; } - return Math.min( maxAmount, list.size() ); + return Math.min(maxAmount, list.size()); } @@ -602,22 +645,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void trackData( MarkerCardResult markerCardResult ) { - if ( markerCardResult == null ) { + private void trackData(MarkerCardResult markerCardResult) { + if (markerCardResult == null) { return; } JSONArray array = new JSONArray(); - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); + List onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); int size = onlineCarList == null ? 0 : onlineCarList.size(); - fillNumberTrackEventBody( array, 3, size ); + fillNumberTrackEventBody(array, 3, size); size = exploreWayList == null ? 0 : exploreWayList.size(); - fillNumberTrackEventBody( array, 1, size ); + fillNumberTrackEventBody(array, 1, size); size = shareMusicList == null ? 0 : shareMusicList.size(); - fillNumberTrackEventBody( array, 4, size ); + fillNumberTrackEventBody(array, 4, size); int num_gas_station = 0; int num_traffic_check = 0; @@ -625,12 +668,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, int num_shop_discount = 0; int num_fours_shop = 0; - if ( noveltyInfoList != null ) { - for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) { - if ( markerNoveltyInfo == null ) { + if (noveltyInfoList != null) { + for (MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList) { + if (markerNoveltyInfo == null) { continue; } - switch ( markerNoveltyInfo.getPoiType() ) { + switch (markerNoveltyInfo.getPoiType()) { case MarkerPoiTypeEnum.GAS_STATION: num_gas_station++; break; @@ -650,20 +693,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } } - fillNumberTrackEventBody( array, 2, num_gas_station ); - fillNumberTrackEventBody( array, 6, num_road_closed ); - fillNumberTrackEventBody( array, 5, num_traffic_check ); - fillNumberTrackEventBody( array, 7, num_shop_discount ); - fillNumberTrackEventBody( array, 8, num_fours_shop ); + fillNumberTrackEventBody(array, 2, num_gas_station); + fillNumberTrackEventBody(array, 6, num_road_closed); + fillNumberTrackEventBody(array, 5, num_traffic_check); + fillNumberTrackEventBody(array, 7, num_shop_discount); + fillNumberTrackEventBody(array, 8, num_fours_shop); try { - if ( array.length() == 0 ) { + if (array.length() == 0) { return; } - final Map< String, Object > properties = new HashMap<>(); - properties.put( "data", array.toString() ); - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties ); - } catch ( Exception e ) { + final Map properties = new HashMap<>(); + properties.put("data", array.toString()); + MarkerServiceHandler.getMogoAnalytics().track("Launcher_Data_Get", properties); + } catch (Exception e) { e.printStackTrace(); } } @@ -674,15 +717,18 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 仅在数据刷新的时候分发 */ private void dispatchDataToBiz() { - if ( mLastDataResult == null ) { + if (mLastDataResult == null) { return; } - List< MarkerOnlineCar > onlineCarList = mLastDataResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = mLastDataResult.getExploreWay(); - List< MarkerNoveltyInfo > noveltyInfoList = mLastDataResult.getNoveltyInfo(); - dispatchDataToBis( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList ); - dispatchDataToBis( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList ); - dispatchDataToBis( ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? new ArrayList<>() : noveltyInfoList ); + List onlineCarList = mLastDataResult.getOnlineCar(); + List exploreWayList = mLastDataResult.getExploreWay(); + List noveltyInfoList = mLastDataResult.getNoveltyInfo(); + dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? + new ArrayList<>() : onlineCarList); + dispatchDataToBis(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? + new ArrayList<>() : exploreWayList); + dispatchDataToBis(ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? + new ArrayList<>() : noveltyInfoList); } /** @@ -691,14 +737,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param biz * @param object */ - private void dispatchDataToBis( String biz, Object object ) { - if ( TextUtils.isEmpty( biz ) ) { + private void dispatchDataToBis(String biz, Object object) { + if (TextUtils.isEmpty(biz)) { return; } try { - Logger.d( TAG, "dispatch data to %s", biz ); - MarkerServiceHandler.getDataManager().syncData( biz, object ); - } catch ( Exception e ) { + Logger.d(TAG, "dispatch data to %s", biz); + MarkerServiceHandler.getDataManager().syncData(biz, object); + } catch (Exception e) { e.printStackTrace(); } } @@ -706,15 +752,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, /** * 统计埋点 */ - private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) { + private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) { JSONObject object = new JSONObject(); try { - object.put( "type", type ); - object.put( "num", size ); - if ( arr != null ) { - arr.put( object ); + object.put("type", type); + object.put("num", size); + if (arr != null) { + arr.put(object); } - } catch ( JSONException e ) { + } catch (JSONException e) { e.printStackTrace(); } } @@ -725,75 +771,143 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerShowEntity marker 绘制数据实体 * @return 绘制的Marker */ - public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) { + public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) { try { - return drawMapMarker( markerShowEntity, isSmallType() ); - } catch ( Exception e ) { + return drawMapMarker(markerShowEntity, isSmallType()); + } catch (Exception e) { e.printStackTrace(); return null; } } private boolean isSmallType() { - return !TextUtils.isEmpty( mCurrentModuleName ) - && mLastCheckMarker != null - && !mLastCheckMarker.isDestroyed() - && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() ); + return !TextUtils.isEmpty(mCurrentModuleName) && mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() && TextUtils.equals(mCurrentModuleName, mLastCheckMarker.getOwner()); } - private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) { - if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) { + private IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, boolean isSmall) { + if (markerShowEntity == null || markerShowEntity.getMarkerLocation() == null) { return null; } - MogoMarkerOptions options = new MogoMarkerOptions() - .owner( markerShowEntity.getMarkerType() ) - .object( markerShowEntity ) - .latitude( markerShowEntity.getMarkerLocation().getLat() ) - .longitude( markerShowEntity.getMarkerLocation().getLon() ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, options ); - options.icon( markerView.getView() ); + MogoMarkerOptions options = + new MogoMarkerOptions().owner(markerShowEntity.getMarkerType()).object(markerShowEntity).latitude(markerShowEntity.getMarkerLocation().getLat()).longitude(markerShowEntity.getMarkerLocation().getLon()); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + options); + options.icon(markerView.getView()); - IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( markerShowEntity.getMarkerType(), options ); - marker.setOwner( markerShowEntity.getMarkerType() ); - markerView.setMarker( marker ); - marker.setOnMarkerClickListener( this ); + IMogoMarker marker = + MarkerServiceHandler.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options); + marker.setOwner(markerShowEntity.getMarkerType()); + markerView.setMarker(marker); + marker.setOnMarkerClickListener(this); - if ( isSmall ) { - List< IMogoMarker > markers = new ArrayList<>(); - markers.add( marker ); - setMarkersSmall( markers ); + if (isSmall) { + List markers = new ArrayList<>(); + markers.add(marker); + setMarkersSmall(markers); } - markerShowEntity.setMarker( marker ); + markerShowEntity.setMarker(marker); return marker; } @Override - public Class< MarkerResponse > target() { + public Class target() { return MarkerResponse.class; } @Override - public void onMsgReceived( final MarkerResponse response ) { - if ( ignoreDrawRequest() ) { + public void onMsgReceived(final MarkerResponse response) { + if (ignoreDrawRequest()) { return; } - Logger.d( TAG, "接收到了地图大而全数据" ); - runOnTargetThread( () -> { - drawMapMarker( response ); - } ); + Logger.d(TAG, "接收到了地图大而全数据"); + runOnTargetThread(() -> { + drawMapMarker(response); + }); } + public void getOnlineCarData(MogoLatLng latlng) { +// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){ + mCarLatLng = latlng; + getOnlineCarList(); + UiThreadHandler.removeCallbacks(runnable); + UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000); +// } + } + + private Runnable runnable = new Runnable() { + @Override + public void run() { + getOnlineCarList(); + UiThreadHandler.postDelayed(this, mCarSmoothDuration * 1000); + } + }; + + private double lat = 39.969161; + private double lng = 116.412334; + private int a = 0; + + private void getOnlineCarList() { + mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { + @Override + public void onSuccess(Object o) { + Logger.i(TAG, "11111111211" + o.toString()); + +// MarkerResponse data = (MarkerResponse)o; +// MarkerCardResult result = data.getResult(); +// if (result == null) { +// return; +// } +// +// List onlineCarList = result.getOnlineCar(); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + + a++; + if (a == 3){ + return; + } + + MarkerLocation location = new MarkerLocation(); + location.setLat(lat); + location.setLon(lng); + + + lng += 0.003; + double[] coor2 = {lng,lat}; + MarkerCarPois pois2 = new MarkerCarPois(); + pois2.setCoordinates(coor2); + + List pois = new ArrayList<>(); + pois.add(pois2); + MarkerOnlineCar onlineCar = new MarkerOnlineCar(); + onlineCar.setLocation(location); + onlineCar.setType(ServiceConst.CARD_TYPE_USER_DATA); + onlineCar.setPois(pois); + + List onlineCarList = new ArrayList<>(); + onlineCarList.add(onlineCar); + + drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + + } + + @Override + public void onFail() { + + } + }); + } + + private boolean ignoreDrawRequest() { - return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() - || MarkerServiceHandler.getMogoStatusManager().isADASShow(); + return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow(); } - private void runOnTargetThread( Runnable runnable ) { - if ( runnable == null ) { + private void runOnTargetThread(Runnable runnable) { + if (runnable == null) { return; } - ThreadPoolService.execute( runnable ); + ThreadPoolService.execute(runnable); } public String getCurrentModuleName() { @@ -801,20 +915,19 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } @Override - public void onBizActionDone( String biz, int position, Object data ) { - Logger.d( TAG, "biz = %s, position = %s", biz, position ); - if ( data instanceof MarkerShowEntity && - ( ( MarkerShowEntity ) data ).getMarker() != null ) { - switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() ); + public void onBizActionDone(String biz, int position, Object data) { + Logger.d(TAG, "biz = %s, position = %s", biz, position); + if (data instanceof MarkerShowEntity && ((MarkerShowEntity) data).getMarker() != null) { + switchMarkerOpenStatus(((MarkerShowEntity) data).getMarker()); } else { IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); - List< IMogoMarker > markers = markerManager.getMarkers( biz ); - if ( markers != null ) { + List markers = markerManager.getMarkers(biz); + if (markers != null) { try { - IMogoMarker marker = markers.get( position ); - switchMarkerOpenStatus( marker ); - } catch ( Exception e ) { - Logger.e( TAG, e, "occur error." ); + IMogoMarker marker = markers.get(position); + switchMarkerOpenStatus(marker); + } catch (Exception e) { + Logger.e(TAG, e, "occur error."); } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java index c39d8faf80..722b7cfa29 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java @@ -1,6 +1,7 @@ package com.mogo.module.service.network; import com.mogo.commons.data.BaseData; +import com.mogo.module.common.entity.MarkerResponse; import java.util.Map; @@ -23,4 +24,9 @@ public interface RefreshApiService { @FormUrlEncoded @POST( "/yycp-launcherSnapshot/launcherSnapshot/querySnapshotAsync" ) Observable< BaseData > refreshData( @FieldMap Map< String, Object > parameters ); + + @FormUrlEncoded + @POST( "/yycp-launcherSnapshot/user/queryOnLineCarWithRoute" ) + Observable queryOnLineCarWithRoute(@FieldMap Map< String, Object > parameters ); + } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java index 281ecdef93..769aa2c6a1 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshBody.java @@ -16,6 +16,7 @@ public class RefreshBody { public int radius = 2_000; // 地理围栏半径(米) public LatLon location; // 坐标 + public String sn; public boolean onlyFocus; // 是否仅查询已关注的好友 public boolean onlySameCity; // 是否仅查询注册城市相同的同城用户 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java index 64575bb66c..34a46cd615 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java @@ -6,9 +6,9 @@ package com.mogo.module.service.network; *

* 刷新回调 */ -public interface RefreshCallback { +public interface RefreshCallback { - void onSuccess(); + void onSuccess(T o); void onFail(); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index caffd2596e..528814792b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -7,7 +7,9 @@ import com.mogo.commons.data.BaseData; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.ParamsProvider; import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; import com.mogo.map.MogoLatLng; +import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.service.ServiceConst; import com.mogo.service.MogoServicePaths; import com.mogo.service.network.IMogoNetwork; @@ -73,7 +75,7 @@ public class RefreshModel { public void onSuccess(BaseData o) { super.onSuccess(o); if (callback != null) { - callback.onSuccess(); + callback.onSuccess(o); } } @@ -129,7 +131,7 @@ public class RefreshModel { public void onSuccess(BaseData o) { super.onSuccess(o); if (callback != null) { - callback.onSuccess(); + callback.onSuccess(o); } } @@ -143,4 +145,52 @@ public class RefreshModel { }); } } + + + /** + * 查询车辆 及路线 + * + * @param latLng 经纬度 + * @param onlyFocus 是否仅查询已关注的好友 + * @param onlySameCity 是否仅查询注册城市相同的同城用户 + * @param callback + */ + public void queryOnLineCarWithRoute(MogoLatLng latLng, + boolean onlyFocus, + boolean onlySameCity, + final RefreshCallback callback){ + if (mRefreshApiService != null) { + final Map query = new ParamsProvider.Builder(mContext).build(); + final RefreshBody refreshBody = new RefreshBody(); + refreshBody.sn = Utils.getSn(); + refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lng); + refreshBody.onlyFocus = onlyFocus; + refreshBody.onlySameCity = onlySameCity; + + query.put("data", GsonUtil.jsonFromObject(refreshBody)); + mRefreshApiService.queryOnLineCarWithRoute(query) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)){ + @Override + public void onSuccess(MarkerResponse o) { + super.onSuccess(o); + if (callback != null) { + callback.onSuccess(o); + } + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + if (callback != null) { + callback.onFail(); + } + } + }); + } + } + + + } From f71ebc23275c01fa39e86842baf2598e987e3702 Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Mon, 20 Apr 2020 18:41:25 +0800 Subject: [PATCH 5/6] =?UTF-8?q?smooth=20move=201=EF=BC=88using=20test=20da?= =?UTF-8?q?ta=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/marker/MapMarkerManager.java | 695 ++++++++++-------- .../module/service/network/RefreshModel.java | 2 +- 2 files changed, 405 insertions(+), 292 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 2828c1b12c..1194162f1c 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 @@ -12,6 +12,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; +import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; @@ -24,6 +25,8 @@ import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.Utils; +import com.mogo.module.service.network.RefreshCallback; +import com.mogo.module.service.network.RefreshModel; import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; @@ -49,8 +52,7 @@ import java.util.Map; * version: 1.0 */ public class MapMarkerManager implements IMogoMarkerClickListener, - IMogoOnMessageListener< MarkerResponse >, - IMogoCardChangedListener, + IMogoOnMessageListener, IMogoCardChangedListener, IMogoBizActionDoneListener { private static final String TAG = "MapMarkerManager"; // 是否选中在线卡片及气泡,语音搜索触发 @@ -63,20 +65,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; // 记录其它已经缩小的Marker - public ArrayList< String > alreadySmallMarker = new ArrayList<>(); + public ArrayList alreadySmallMarker = new ArrayList<>(); + // 存储所有汽车marker + public ArrayList carMarkers = new ArrayList<>(); // 距离用户最近的Marker private IMogoMarker mNearlyMarker = null; // 记录上次请求数据,切换卡片时做数据处理 private MarkerCardResult mLastDataResult; private boolean mIsMarkerClicked = false; + private RefreshModel mRefreshModel; + private MogoLatLng mCarLatLng; + private int mCarSmoothDuration = 5; private MapMarkerManager() { } public static synchronized MapMarkerManager getInstance() { - synchronized ( MapMarkerManager.class ) { - if ( mMarkerManager == null ) { + synchronized (MapMarkerManager.class) { + if (mMarkerManager == null) { mMarkerManager = new MapMarkerManager(); } } @@ -89,36 +96,38 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param context */ - public void init( Context context ) { + public void init(Context context) { mContext = context; + mRefreshModel = new RefreshModel(mContext); + // 长连接 - MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); - MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this ); - MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); + MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener(401001, this); + MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( + "LAUNCHER_MARKER_MODULE", this); + MarkerServiceHandler.getActionManager().registerBizActionDoneListener(this); } // ACC ON 的时候重置为true,ACC OFF 设置为 false // 保留 - 外部模块调用 - public void setCheckOn( boolean checkOnLineData ) { - Logger.e( TAG, "do not invoke anymore." ); + public void setCheckOn(boolean checkOnLineData) { + Logger.e(TAG, "do not invoke anymore."); } @Override - public void onSwitched( int position, String moduleName ) { - Logger.d( TAG, "当前C位卡片:" + moduleName ); - if ( ( TextUtils.isEmpty( mCurrentModuleName ) - || TextUtils.equals( mCurrentModuleName, ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) ) - && mIsMarkerClicked ) { + public void onSwitched(int position, String moduleName) { + Logger.d(TAG, "当前C位卡片:" + moduleName); + if ((TextUtils.isEmpty(mCurrentModuleName) || TextUtils.equals(mCurrentModuleName, + ServiceConst.CARD_TYPE_BUSINESS_OPERATION)) && mIsMarkerClicked) { mIsMarkerClicked = false; // 在广告位(默认位置)点击marker造成卡片切换的,还是现实全部marker 【需求:os2.0.2-2.5-4】 - highlightedMarker( moduleName, false ); + highlightedMarker(moduleName, false); mCurrentModuleName = moduleName; } else { mCurrentModuleName = moduleName; - runOnTargetThread( () -> { + runOnTargetThread(() -> { MarkerServiceHandler.getMarkerManager().removeMarkers(); - drawMarkerByCurrentType( mLastDataResult ); - } ); + drawMarkerByCurrentType(mLastDataResult); + }); } } @@ -126,58 +135,58 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 地图上的Marker点击回调 */ @Override - public boolean onMarkerClicked( IMogoMarker marker ) { + public boolean onMarkerClicked(IMogoMarker marker) { mIsMarkerClicked = true; - Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker ); + Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker); try { - boolean result = switchMarkerOpenStatus( marker ); - if ( !result ) { + boolean result = switchMarkerOpenStatus(marker); + if (!result) { return false; } // 数据统计代码 - final Map< String, Object > properties = new HashMap<>(); - switch ( mLastCheckMarker.getOwner() ) { + final Map properties = new HashMap<>(); + switch (mLastCheckMarker.getOwner()) { case ServiceConst.CARD_TYPE_CARS_CHATTING: - properties.put( "type", 3 ); + properties.put("type", 3); break; case ServiceConst.CARD_TYPE_USER_DATA: - properties.put( "type", 5 ); + properties.put("type", 5); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - properties.put( "type", 2 ); + properties.put("type", 2); break; case ServiceConst.CARD_TYPE_NOVELTY: - MarkerShowEntity showEntity = ( MarkerShowEntity ) mLastCheckMarker.getObject(); + MarkerShowEntity showEntity = (MarkerShowEntity) mLastCheckMarker.getObject(); Object bindObj = showEntity.getBindObj(); - if ( bindObj instanceof MarkerNoveltyInfo ) { - switch ( ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ) { + if (bindObj instanceof MarkerNoveltyInfo) { + switch (((MarkerNoveltyInfo) bindObj).getPoiType()) { case MarkerPoiTypeEnum.GAS_STATION: - properties.put( "type", 4 ); + properties.put("type", 4); break; case MarkerPoiTypeEnum.TRAFFIC_CHECK: - properties.put( "type", 8 ); + properties.put("type", 8); break; case MarkerPoiTypeEnum.ROAD_CLOSED: - properties.put( "type", 7 ); + properties.put("type", 7); break; case MarkerPoiTypeEnum.SHOP_DISCOUNT: - properties.put( "type", 9 ); + properties.put("type", 9); break; case MarkerPoiTypeEnum.FOURS_4S: - properties.put( "type", 10 ); + properties.put("type", 10); break; } } break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - properties.put( "type", 6 ); + properties.put("type", 6); break; } - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); + MarkerServiceHandler.getMogoAnalytics().track("Launcher_Icon_Click", properties); - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } return false; @@ -189,99 +198,103 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param marker * @return */ - private boolean switchMarkerOpenStatus( IMogoMarker marker ) { - if ( mLastCheckMarker != null ) { + private boolean switchMarkerOpenStatus(IMogoMarker marker) { + if (mLastCheckMarker != null) { // 判断点击的是否是同一个 - if ( marker.equals( mLastCheckMarker ) ) { - Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker ); + if (marker.equals(mLastCheckMarker)) { + Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker); return false; } // 将上次选中 Marker 设置为未选中状态 - closeMarker( mLastCheckMarker ); + closeMarker(mLastCheckMarker); } // 将当前的Marker设置为选中 - openMarker( marker ); + openMarker(marker); return true; } // 对指定类型高亮处理 - public synchronized void highlightedMarker( final String typeTag ) { - highlightedMarker( typeTag, false ); + public synchronized void highlightedMarker(final String typeTag) { + highlightedMarker(typeTag, false); } - public synchronized void highlightedMarker( final String typeTag, final boolean netDataRefresh ) { + public synchronized void highlightedMarker(final String typeTag, final boolean netDataRefresh) { try { - Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName ); - if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, typeTag ) && !netDataRefresh ) { + Logger.e(TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName); + if (!TextUtils.isEmpty(mCurrentModuleName) && TextUtils.equals(mCurrentModuleName, + typeTag) && !netDataRefresh) { return; } // 从已经缩小的记录删除 - alreadySmallMarker.remove( typeTag ); - List< IMogoMarker > currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers( typeTag ); + alreadySmallMarker.remove(typeTag); + List currentHighLightList = + MarkerServiceHandler.getMarkerManager().getMarkers(typeTag); - if ( currentHighLightList == null || currentHighLightList.size() == 0 ) { + if (currentHighLightList == null || currentHighLightList.size() == 0) { alreadySmallMarker.clear(); // 放大所有的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - setMarkersBig( lastHighLightList.get( markerName ) ); + Map> lastHighLightList = + MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for (String markerName : lastHighLightList.keySet()) { + setMarkersBig(lastHighLightList.get(markerName)); } } else { // 缩小其他的气泡 - Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for ( String markerName : lastHighLightList.keySet() ) { - if ( !markerName.equals( typeTag ) ) { - if ( !alreadySmallMarker.contains( markerName ) ) { - alreadySmallMarker.add( markerName ); - setMarkersSmall( lastHighLightList.get( markerName ) ); + Map> lastHighLightList = + MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for (String markerName : lastHighLightList.keySet()) { + if (!markerName.equals(typeTag)) { + if (!alreadySmallMarker.contains(markerName)) { + alreadySmallMarker.add(markerName); + setMarkersSmall(lastHighLightList.get(markerName)); } } } // 将当前卡片选中的气泡放大 - setMarkersBig( currentHighLightList ); + setMarkersBig(currentHighLightList); } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } - private static void setMarkersBig( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { + private static void setMarkersBig(List markers) { + if (markers == null || markers.isEmpty()) { return; } - for ( IMogoMarker mogoMarker : markers ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { + for (IMogoMarker mogoMarker : markers) { + if (mogoMarker == null || mogoMarker.isDestroyed()) { continue; } try { - mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator()); + } catch (Exception e) { + Logger.e(TAG, e, "error."); } } } - private static void setMarkersSmall( List< IMogoMarker > markers ) { - if ( markers == null || markers.isEmpty() ) { + private static void setMarkersSmall(List markers) { + if (markers == null || markers.isEmpty()) { return; } - for ( IMogoMarker mogoMarker : markers ) { - smallMarker( mogoMarker ); + for (IMogoMarker mogoMarker : markers) { + smallMarker(mogoMarker); } } - private static void smallMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null || mogoMarker.isDestroyed() ) { + private static void smallMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null || mogoMarker.isDestroyed()) { return; } try { - mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); + mogoMarker.startScaleAnimation(1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator()); + } catch (Exception e) { + Logger.e(TAG, e, "error."); } } @@ -290,83 +303,85 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param marker 要关闭的Marker */ - public synchronized void closeMarkerSelect( IMogoMarker marker ) { + public synchronized void closeMarkerSelect(IMogoMarker marker) { // 将上次选中 Marker 设置为未选中状态 - if ( marker != null ) { - Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker ); - closeMarker( marker ); + if (marker != null) { + Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker); + closeMarker(marker); mLastCheckMarker = null; } } // 展开气泡 - private void openMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null ) { + private void openMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null) { return; } - if ( mLastCheckMarker != null ) { - closeMarker( mLastCheckMarker ); + if (mLastCheckMarker != null) { + closeMarker(mLastCheckMarker); } mLastCheckMarker = mogoMarker; Object object = mogoMarker.getObject(); - if ( object != null ) { - MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; - markerShowEntity.setChecked( true ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); - mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); + if (object != null) { + MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; + markerShowEntity.setChecked(true); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + mogoMarker.getMogoMarkerOptions()); + mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); mogoMarker.setToTop(); } } // 折叠气泡 - private void closeMarker( IMogoMarker mogoMarker ) { - if ( mogoMarker == null ) { + private void closeMarker(IMogoMarker mogoMarker) { + if (mogoMarker == null) { return; } Object object = mogoMarker.getObject(); - if ( object != null ) { - MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; - markerShowEntity.setChecked( false ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); - mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); + if (object != null) { + MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; + markerShowEntity.setChecked(false); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + mogoMarker.getMogoMarkerOptions()); + mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); } } // 绘制Marker - public synchronized void drawMapMarker( MarkerResponse response ) { + public synchronized void drawMapMarker(MarkerResponse response) { - if ( response == null || response.getResult() == null ) { + if (response == null || response.getResult() == null) { return; } - if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { return; } // 解析不同的Marker类型,然后对应的进行绘制 - Logger.d( TAG, "draw marker" ); + Logger.d(TAG, "draw marker"); mLastDataResult = response.getResult(); - UiThreadHandler.post( () -> { + UiThreadHandler.post(() -> { dispatchDataToBiz(); - } ); + }); // 语音触发的在线车辆搜索,采用增量的形式绘制 - if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) { - MarkerServiceHandler.getMarkerManager().removeMarkers( ServiceConst.CARD_TYPE_USER_DATA ); - MarkerServiceHandler.getMogoCardManager().switch2( ServiceConst.CARD_TYPE_USER_DATA ); + if (mIsAISearchOnlineData = isOnlineCarDataOnly(mLastDataResult)) { + MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA); + MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA); } else { mLastCheckMarker = null; // 清空所有地图上绘制的Marker MarkerServiceHandler.getMarkerManager().removeMarkers(); } - drawMarkerByCurrentType( mLastDataResult ); + drawMarkerByCurrentType(mLastDataResult); // 同步新绘制的气泡状态 alreadySmallMarker.clear(); // highlightedMarker( mCurrentModuleName, true ); - trackData( mLastDataResult ); + trackData(mLastDataResult); } /** @@ -375,11 +390,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerCardResult * @return */ - private boolean isOnlineCarDataOnly( MarkerCardResult markerCardResult ) { - if ( markerCardResult != null && - markerCardResult.getDataType() != null && - markerCardResult.getDataType().size() == 1 && - markerCardResult.getDataType().contains( ServiceConst.CARD_TYPE_USER_DATA ) ) { + private boolean isOnlineCarDataOnly(MarkerCardResult markerCardResult) { + if (markerCardResult != null && markerCardResult.getDataType() != null && markerCardResult.getDataType().size() == 1 && markerCardResult.getDataType().contains(ServiceConst.CARD_TYPE_USER_DATA)) { return true; } return false; @@ -390,42 +402,42 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) { + private synchronized void drawMarkerByCurrentType(MarkerCardResult markerCardResult) { - if ( markerCardResult == null ) { + if (markerCardResult == null) { return; } - if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { return; } - if ( TextUtils.isEmpty( mCurrentModuleName ) ) { + if (TextUtils.isEmpty(mCurrentModuleName)) { // 默认大而全 mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; } - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); +// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); - switch ( mCurrentModuleName ) { + switch (mCurrentModuleName) { case ServiceConst.CARD_TYPE_BUSINESS_OPERATION: - drawAllMarker( markerCardResult ); + drawAllMarker(markerCardResult); break; case ServiceConst.CARD_TYPE_NOVELTY: - drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: - drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); break; } } @@ -435,16 +447,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void drawAllMarker( MarkerCardResult markerCardResult ) { - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); + private void drawAllMarker(MarkerCardResult markerCardResult) { + List onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); - drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); - drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL ); - drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_ALL ); - drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL ); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); + drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL); + drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_ALL); + drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL); } /** @@ -452,61 +464,92 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param onlineCarList */ - private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList, int maxAmount ) { + private void drawOnlineCarMarkers(List onlineCarList, int maxAmount) { // 将数据同步给在线车辆,避免每次 perform 的时候去拉取,造成消耗 - if ( onlineCarList == null || onlineCarList.isEmpty() ) { + if (onlineCarList == null || onlineCarList.isEmpty()) { return; } + + for (int i = 0; i < carMarkers.size(); i++) { + IMogoMarker marker = carMarkers.get(i); + marker.destroy(); + } + double nearlyDistance = Float.MAX_VALUE; - int size = getAppropriateSize( maxAmount, onlineCarList ); - for ( int i = 0; i < size; i++ ) { - MarkerOnlineCar markerOnlineCar = onlineCarList.get( i ); + int size = getAppropriateSize(maxAmount, onlineCarList); + for (int i = 0; i < size; i++) { + MarkerOnlineCar markerOnlineCar = onlineCarList.get(i); MarkerLocation markerLocation = markerOnlineCar.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerOnlineCar ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerOnlineCar.getType() ); - markerShowEntity.setTextContent( markerOnlineCar.getUserInfo().getUserName() ); - markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() ); + markerShowEntity.setBindObj(markerOnlineCar); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerOnlineCar.getType()); + + if (markerOnlineCar.getCarInfo() != null) { + markerShowEntity.setTextContent(markerOnlineCar.getUserInfo().getUserName()); + markerShowEntity.setIconUrl(markerOnlineCar.getUserInfo().getUserHead()); + } + + IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); + + carMarkers.add(iMogoMarker); + List poisList = markerOnlineCar.getPois(); + if (poisList.size() > 0){ + List points = new ArrayList<>(); + + if (poisList.size() == 1){ + points.add(new MogoLatLng(markerLocation.getLat(),markerLocation.getLon())); + } + for (int j = 0; j < poisList.size(); j++) { + MarkerCarPois pois = poisList.get(j); + double lat = pois.getCoordinates()[1]; + double lng = pois.getCoordinates()[0]; + points.add(new MogoLatLng(lat,lng)); + + } + iMogoMarker.startSmooth(points,mCarSmoothDuration); + } + - IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity ); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { // 当前车辆的位置 - MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); + MogoLocation currentLocation = + MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); // 计算车辆距离指定气泡的距离 - float calculateDistance = Utils.calculateLineDistance( - new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ), - new MogoLatLng( currentLocation.getLatitude(), currentLocation.getLongitude() ) - ); + float calculateDistance = + Utils.calculateLineDistance(new MogoLatLng(markerLocation.getLat(), + markerLocation.getLon()), + new MogoLatLng(currentLocation.getLatitude(), + currentLocation.getLongitude())); // 进行比较,保留最近的一个数据 - if ( calculateDistance < nearlyDistance ) { + if (calculateDistance < nearlyDistance) { nearlyDistance = calculateDistance; mNearlyMarker = iMogoMarker; } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } - Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance ); + Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance); try { // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker - if ( mIsAISearchOnlineData ) { - if ( mNearlyMarker != null ) { - Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker ); + if (mIsAISearchOnlineData) { + if (mNearlyMarker != null) { + Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker); // 移动地图到指定位置 - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false ); - MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() ); - onMarkerClicked( mNearlyMarker ); - MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker ); + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false); + MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMarker.getPosition()); + onMarkerClicked(mNearlyMarker); + MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMarker); mIsAISearchOnlineData = false; } } - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } } @@ -516,24 +559,24 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param exploreWayList */ - private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList, int maxAmount ) { + private void drawRoadConditionMarker(List exploreWayList, int maxAmount) { // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗 - if ( exploreWayList == null || exploreWayList.isEmpty() ) { + if (exploreWayList == null || exploreWayList.isEmpty()) { return; } - int size = getAppropriateSize( maxAmount, exploreWayList ); - for ( int i = 0; i < size; i++ ) { - MarkerExploreWay markerExploreWay = exploreWayList.get( i ); - if ( !markerExploreWay.getCanLive() ) { + int size = getAppropriateSize(maxAmount, exploreWayList); + for (int i = 0; i < size; i++) { + MarkerExploreWay markerExploreWay = exploreWayList.get(i); + if (!markerExploreWay.getCanLive()) { MarkerLocation markerLocation = markerExploreWay.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerExploreWay ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerExploreWay.getType() ); - markerShowEntity.setTextContent( markerExploreWay.getAddr() ); + markerShowEntity.setBindObj(markerExploreWay); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerExploreWay.getType()); + markerShowEntity.setTextContent(markerExploreWay.getAddr()); - drawMapMarker( markerShowEntity ); + drawMapMarker(markerShowEntity); } } } @@ -543,22 +586,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param shareMusicList */ - private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList, int maxAmount ) { - if ( shareMusicList == null ) { + private void drawShareMusicMarker(List shareMusicList, int maxAmount) { + if (shareMusicList == null) { return; } - int size = getAppropriateSize( maxAmount, shareMusicList ); - for ( int i = 0; i < size; i++ ) { - MarkerShareMusic markerShareMusic = shareMusicList.get( i ); + int size = getAppropriateSize(maxAmount, shareMusicList); + for (int i = 0; i < size; i++) { + MarkerShareMusic markerShareMusic = shareMusicList.get(i); MarkerLocation markerLocation = markerShareMusic.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( markerShareMusic ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( markerShareMusic.getType() ); - markerShowEntity.setTextContent( markerShareMusic.getMediaName() ); - markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() ); + markerShowEntity.setBindObj(markerShareMusic); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(markerShareMusic.getType()); + markerShowEntity.setTextContent(markerShareMusic.getMediaName()); + markerShowEntity.setIconUrl(markerShareMusic.getMediaImg()); - drawMapMarker( markerShowEntity ); + drawMapMarker(markerShowEntity); } } @@ -567,20 +610,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param noveltyInfoList */ - private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList, int maxAmount ) { - if ( noveltyInfoList == null ) { + private void drawNoveltyMarker(List noveltyInfoList, int maxAmount) { + if (noveltyInfoList == null) { return; } - int size = getAppropriateSize( maxAmount, noveltyInfoList ); - for ( int i = 0; i < size; i++ ) { - MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get( i ); + int size = getAppropriateSize(maxAmount, noveltyInfoList); + for (int i = 0; i < size; i++) { + MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get(i); MarkerLocation markerLocation = noveltyInfo.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj( noveltyInfo ); - markerShowEntity.setMarkerLocation( markerLocation ); - markerShowEntity.setMarkerType( noveltyInfo.getType() ); - markerShowEntity.setTextContent( noveltyInfo.getLocation().getAddress() ); - drawMapMarker( markerShowEntity ); + markerShowEntity.setBindObj(noveltyInfo); + markerShowEntity.setMarkerLocation(markerLocation); + markerShowEntity.setMarkerType(noveltyInfo.getType()); + markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress()); + drawMapMarker(markerShowEntity); } } @@ -589,11 +632,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param list * @return */ - private int getAppropriateSize( int maxAmount, List list ) { - if ( list == null ) { + private int getAppropriateSize(int maxAmount, List list) { + if (list == null) { return 0; } - return Math.min( maxAmount, list.size() ); + return Math.min(maxAmount, list.size()); } @@ -602,22 +645,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void trackData( MarkerCardResult markerCardResult ) { - if ( markerCardResult == null ) { + private void trackData(MarkerCardResult markerCardResult) { + if (markerCardResult == null) { return; } JSONArray array = new JSONArray(); - List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); - List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); - List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); + List onlineCarList = markerCardResult.getOnlineCar(); + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); int size = onlineCarList == null ? 0 : onlineCarList.size(); - fillNumberTrackEventBody( array, 3, size ); + fillNumberTrackEventBody(array, 3, size); size = exploreWayList == null ? 0 : exploreWayList.size(); - fillNumberTrackEventBody( array, 1, size ); + fillNumberTrackEventBody(array, 1, size); size = shareMusicList == null ? 0 : shareMusicList.size(); - fillNumberTrackEventBody( array, 4, size ); + fillNumberTrackEventBody(array, 4, size); int num_gas_station = 0; int num_traffic_check = 0; @@ -625,12 +668,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, int num_shop_discount = 0; int num_fours_shop = 0; - if ( noveltyInfoList != null ) { - for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) { - if ( markerNoveltyInfo == null ) { + if (noveltyInfoList != null) { + for (MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList) { + if (markerNoveltyInfo == null) { continue; } - switch ( markerNoveltyInfo.getPoiType() ) { + switch (markerNoveltyInfo.getPoiType()) { case MarkerPoiTypeEnum.GAS_STATION: num_gas_station++; break; @@ -650,20 +693,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } } - fillNumberTrackEventBody( array, 2, num_gas_station ); - fillNumberTrackEventBody( array, 6, num_road_closed ); - fillNumberTrackEventBody( array, 5, num_traffic_check ); - fillNumberTrackEventBody( array, 7, num_shop_discount ); - fillNumberTrackEventBody( array, 8, num_fours_shop ); + fillNumberTrackEventBody(array, 2, num_gas_station); + fillNumberTrackEventBody(array, 6, num_road_closed); + fillNumberTrackEventBody(array, 5, num_traffic_check); + fillNumberTrackEventBody(array, 7, num_shop_discount); + fillNumberTrackEventBody(array, 8, num_fours_shop); try { - if ( array.length() == 0 ) { + if (array.length() == 0) { return; } - final Map< String, Object > properties = new HashMap<>(); - properties.put( "data", array.toString() ); - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties ); - } catch ( Exception e ) { + final Map properties = new HashMap<>(); + properties.put("data", array.toString()); + MarkerServiceHandler.getMogoAnalytics().track("Launcher_Data_Get", properties); + } catch (Exception e) { e.printStackTrace(); } } @@ -674,15 +717,18 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 仅在数据刷新的时候分发 */ private void dispatchDataToBiz() { - if ( mLastDataResult == null ) { + if (mLastDataResult == null) { return; } - List< MarkerOnlineCar > onlineCarList = mLastDataResult.getOnlineCar(); - List< MarkerExploreWay > exploreWayList = mLastDataResult.getExploreWay(); - List< MarkerNoveltyInfo > noveltyInfoList = mLastDataResult.getNoveltyInfo(); - dispatchDataToBis( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList ); - dispatchDataToBis( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList ); - dispatchDataToBis( ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? new ArrayList<>() : noveltyInfoList ); + List onlineCarList = mLastDataResult.getOnlineCar(); + List exploreWayList = mLastDataResult.getExploreWay(); + List noveltyInfoList = mLastDataResult.getNoveltyInfo(); + dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? + new ArrayList<>() : onlineCarList); + dispatchDataToBis(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? + new ArrayList<>() : exploreWayList); + dispatchDataToBis(ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? + new ArrayList<>() : noveltyInfoList); } /** @@ -691,14 +737,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param biz * @param object */ - private void dispatchDataToBis( String biz, Object object ) { - if ( TextUtils.isEmpty( biz ) ) { + private void dispatchDataToBis(String biz, Object object) { + if (TextUtils.isEmpty(biz)) { return; } try { - Logger.d( TAG, "dispatch data to %s", biz ); - MarkerServiceHandler.getDataManager().syncData( biz, object ); - } catch ( Exception e ) { + Logger.d(TAG, "dispatch data to %s", biz); + MarkerServiceHandler.getDataManager().syncData(biz, object); + } catch (Exception e) { e.printStackTrace(); } } @@ -706,15 +752,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, /** * 统计埋点 */ - private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) { + private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) { JSONObject object = new JSONObject(); try { - object.put( "type", type ); - object.put( "num", size ); - if ( arr != null ) { - arr.put( object ); + object.put("type", type); + object.put("num", size); + if (arr != null) { + arr.put(object); } - } catch ( JSONException e ) { + } catch (JSONException e) { e.printStackTrace(); } } @@ -725,75 +771,143 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerShowEntity marker 绘制数据实体 * @return 绘制的Marker */ - public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) { + public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) { try { - return drawMapMarker( markerShowEntity, isSmallType() ); - } catch ( Exception e ) { + return drawMapMarker(markerShowEntity, isSmallType()); + } catch (Exception e) { e.printStackTrace(); return null; } } private boolean isSmallType() { - return !TextUtils.isEmpty( mCurrentModuleName ) - && mLastCheckMarker != null - && !mLastCheckMarker.isDestroyed() - && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() ); + return !TextUtils.isEmpty(mCurrentModuleName) && mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() && TextUtils.equals(mCurrentModuleName, mLastCheckMarker.getOwner()); } - private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) { - if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) { + private IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, boolean isSmall) { + if (markerShowEntity == null || markerShowEntity.getMarkerLocation() == null) { return null; } - MogoMarkerOptions options = new MogoMarkerOptions() - .owner( markerShowEntity.getMarkerType() ) - .object( markerShowEntity ) - .latitude( markerShowEntity.getMarkerLocation().getLat() ) - .longitude( markerShowEntity.getMarkerLocation().getLon() ); - IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, options ); - options.icon( markerView.getView() ); + MogoMarkerOptions options = + new MogoMarkerOptions().owner(markerShowEntity.getMarkerType()).object(markerShowEntity).latitude(markerShowEntity.getMarkerLocation().getLat()).longitude(markerShowEntity.getMarkerLocation().getLon()); + IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, + options); + options.icon(markerView.getView()); - IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( markerShowEntity.getMarkerType(), options ); - marker.setOwner( markerShowEntity.getMarkerType() ); - markerView.setMarker( marker ); - marker.setOnMarkerClickListener( this ); + IMogoMarker marker = + MarkerServiceHandler.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options); + marker.setOwner(markerShowEntity.getMarkerType()); + markerView.setMarker(marker); + marker.setOnMarkerClickListener(this); - if ( isSmall ) { - List< IMogoMarker > markers = new ArrayList<>(); - markers.add( marker ); - setMarkersSmall( markers ); + if (isSmall) { + List markers = new ArrayList<>(); + markers.add(marker); + setMarkersSmall(markers); } - markerShowEntity.setMarker( marker ); + markerShowEntity.setMarker(marker); return marker; } @Override - public Class< MarkerResponse > target() { + public Class target() { return MarkerResponse.class; } @Override - public void onMsgReceived( final MarkerResponse response ) { - if ( ignoreDrawRequest() ) { + public void onMsgReceived(final MarkerResponse response) { + if (ignoreDrawRequest()) { return; } - Logger.d( TAG, "接收到了地图大而全数据" ); - runOnTargetThread( () -> { - drawMapMarker( response ); - } ); + Logger.d(TAG, "接收到了地图大而全数据"); + runOnTargetThread(() -> { + drawMapMarker(response); + }); } + public void getOnlineCarData(MogoLatLng latlng) { +// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){ + mCarLatLng = latlng; + getOnlineCarList(); + UiThreadHandler.removeCallbacks(runnable); + UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000); +// } + } + + private Runnable runnable = new Runnable() { + @Override + public void run() { + getOnlineCarList(); + UiThreadHandler.postDelayed(this, mCarSmoothDuration * 1000); + } + }; + + private double lat = 39.969161; + private double lng = 116.412334; + private int a = 0; + + private void getOnlineCarList() { + mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { + @Override + public void onSuccess(Object o) { + Logger.i(TAG, "11111111211" + o.toString()); + +// MarkerResponse data = (MarkerResponse)o; +// MarkerCardResult result = data.getResult(); +// if (result == null) { +// return; +// } +// +// List onlineCarList = result.getOnlineCar(); +// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + + a++; + if (a == 3){ + return; + } + + MarkerLocation location = new MarkerLocation(); + location.setLat(lat); + location.setLon(lng); + + + lng += 0.003; + double[] coor2 = {lng,lat}; + MarkerCarPois pois2 = new MarkerCarPois(); + pois2.setCoordinates(coor2); + + List pois = new ArrayList<>(); + pois.add(pois2); + MarkerOnlineCar onlineCar = new MarkerOnlineCar(); + onlineCar.setLocation(location); + onlineCar.setType(ServiceConst.CARD_TYPE_USER_DATA); + onlineCar.setPois(pois); + + List onlineCarList = new ArrayList<>(); + onlineCarList.add(onlineCar); + + drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + + } + + @Override + public void onFail() { + + } + }); + } + + private boolean ignoreDrawRequest() { - return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() - || MarkerServiceHandler.getMogoStatusManager().isADASShow(); + return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow(); } - private void runOnTargetThread( Runnable runnable ) { - if ( runnable == null ) { + private void runOnTargetThread(Runnable runnable) { + if (runnable == null) { return; } - ThreadPoolService.execute( runnable ); + ThreadPoolService.execute(runnable); } public String getCurrentModuleName() { @@ -801,20 +915,19 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } @Override - public void onBizActionDone( String biz, int position, Object data ) { - Logger.d( TAG, "biz = %s, position = %s", biz, position ); - if ( data instanceof MarkerShowEntity && - ( ( MarkerShowEntity ) data ).getMarker() != null ) { - switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() ); + public void onBizActionDone(String biz, int position, Object data) { + Logger.d(TAG, "biz = %s, position = %s", biz, position); + if (data instanceof MarkerShowEntity && ((MarkerShowEntity) data).getMarker() != null) { + switchMarkerOpenStatus(((MarkerShowEntity) data).getMarker()); } else { IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); - List< IMogoMarker > markers = markerManager.getMarkers( biz ); - if ( markers != null ) { + List markers = markerManager.getMarkers(biz); + if (markers != null) { try { - IMogoMarker marker = markers.get( position ); - switchMarkerOpenStatus( marker ); - } catch ( Exception e ) { - Logger.e( TAG, e, "occur error." ); + IMogoMarker marker = markers.get(position); + switchMarkerOpenStatus(marker); + } catch (Exception e) { + Logger.e(TAG, e, "occur error."); } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index 528814792b..ac78ab632c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -64,7 +64,7 @@ public class RefreshModel { refreshBody.dataType.add(ServiceConst.CARD_TYPE_CARS_CHATTING); refreshBody.dataType.add(ServiceConst.CARD_TYPE_ROAD_CONDITION); refreshBody.dataType.add(ServiceConst.CARD_TYPE_SHARE_MUSIC); - refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA); +// refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA); refreshBody.dataType.add(ServiceConst.CARD_TYPE_NOVELTY); query.put("data", GsonUtil.jsonFromObject(refreshBody)); mRefreshApiService.refreshData(query) From 318f80f771834b0692c07b97f969a0894521d2ac Mon Sep 17 00:00:00 2001 From: lidongxiu Date: Mon, 20 Apr 2020 20:20:44 +0800 Subject: [PATCH 6/6] update media card version 1.0.4.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f8d5fe5ffb..4ab0e0d987 100644 --- a/gradle.properties +++ b/gradle.properties @@ -68,7 +68,7 @@ MOGO_MODULE_ONLINECAR_VERSION=1.0.3.1 # v2x MOGO_MODULE_V2X_VERSION=1.0.3.3-SNAPSHOT # 媒体卡片 -MOGO_MODULE_MEDIA_VERSION=1.0.4.1 +MOGO_MODULE_MEDIA_VERSION=1.0.4.2 # 推送 MOGO_MODULE_PUSH_VERSION=1.0.1 # 广告资源位