diff --git a/.idea/misc.xml b/.idea/misc.xml
index 707ee6e613..2dc54c489f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 45ac48420c..6ade51c351 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -51,7 +51,7 @@ public class MogoApplication extends AbsMogoApplication {
crashSystem.setDebug(BuildConfig.DEBUG);
Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF);
- MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
+// MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME));
MogoModulePaths.addModule(new MogoModule(PATH_AGREEMENT_FRAGMENT, PATH_AGREEMENT_MODULE_NAME));
//运营位卡片,需要默认显示,放在第一个加载
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/IMogoVoiceCmdCallBack.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/IMogoVoiceCmdCallBack.java
index 58365cd886..eb26dc64f6 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/IMogoVoiceCmdCallBack.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/IMogoVoiceCmdCallBack.java
@@ -34,33 +34,33 @@ public interface IMogoVoiceCmdCallBack {
*
* @param cmd
*/
- void onCmdSelected( String cmd );
+ default void onCmdSelected( String cmd ){}
/**
* 语音播报临时免唤醒“确定”命令
*
* @param speakText 播报内容
*/
- void onCmdAction( String speakText );
+ default void onCmdAction( String speakText ){}
/**
* 语音播报临时免唤醒“取消”命令
*
* @param speakText 播报内容
*/
- void onCmdCancel( String speakText );
+ default void onCmdCancel( String speakText ){}
/**
* 语音播报完毕
*
* @param speakText 播报内容
*/
- void onSpeakEnd( String speakText );
+ default void onSpeakEnd( String speakText ){}
/**
* 语音播报完临时命令选择超时
*
* @param speakText 播报内容
*/
- void onSpeakSelectTimeOut( String speakText );
+ default void onSpeakSelectTimeOut( String speakText ){}
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 7a2fa60048..ad6b79f528 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -56,9 +56,9 @@ MOGO_MODULE_GUIDE_VERSION=1.0.3.12
# 探路
MOGO_MODULE_TANLU_VERSION=1.0.5.6
# 车聊聊
-CARCHATTING_VERSION=1.0.3.2-SNAPSHOT
+CARCHATTING_VERSION=1.0.4-SNAPSHOT
# 车聊聊接口
-CARCHATTINGPROVIDER_VERSION=1.0.3.2-SNAPSHOT
+CARCHATTINGPROVIDER_VERSION=1.0.4-SNAPSHOT
# 视频引导
MOGO_MODULE_GUIDESHOW_VERSION=1.0.2-SNAPSHOT
# 视频引导接口
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java
index ec40a2b4fb..8a705ce576 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java
@@ -55,7 +55,7 @@ public class CalculatePathItem {
return mPath.getLabels();
}
- public String getTime() {
+ public String getFormattedTime() {
if ( mTimeBuilder == null ) {
final int time = mPath.getAllTime();
mTimeBuilder = new StringBuilder();
@@ -64,6 +64,14 @@ public class CalculatePathItem {
return mTimeBuilder.toString();
}
+ public int getTime(){
+ return mPath.getAllTime();
+ }
+
+ public int getDistance(){
+ return mPath.getAllLength();
+ }
+
private StringBuilder mTimeBuilder;
private void fillFormatTime( int seconds, StringBuilder builder ) {
@@ -83,7 +91,7 @@ public class CalculatePathItem {
private String mDistanceCacheStr = "";
- public String getDistance() {
+ public String getFormattedDistance() {
if ( TextUtils.isEmpty( mDistanceCacheStr ) ) {
int distance = mPath.getAllLength();
if ( distance == -1 ) {
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
index 9448f2b296..c057446979 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
@@ -13,7 +13,6 @@ import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
-import com.amap.api.maps.model.MarkerOptionsCreator;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.model.AMapNaviLocation;
@@ -21,15 +20,12 @@ import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.map.MogoLatLng;
-import com.mogo.map.MogoMap;
import com.mogo.map.impl.amap.AMapWrapper;
import com.mogo.map.impl.amap.R;
import com.mogo.map.impl.amap.overlay.RouteOverLayWrapper;
-import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.marker.MogoMarkersHandler;
import com.mogo.map.navi.MogoCalculatePath;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
-import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
@@ -394,10 +390,12 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
if ( mCalculatePathItems != null && !mCalculatePathItems.isEmpty() ) {
for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) {
MogoCalculatePath path = new MogoCalculatePath();
- path.setDistance( calculatePathItem.getDistance() );
+ path.setFormattedDistance( calculatePathItem.getFormattedDistance() );
path.setPathId( calculatePathItem.getId() );
path.setStrategyName( calculatePathItem.getStrategyName() );
+ path.setFormattedTime( calculatePathItem.getFormattedTime() );
path.setTime( calculatePathItem.getTime() );
+ path.setDistance( calculatePathItem.getDistance() );
List< NaviLatLng > coordList = calculatePathItem.getPath().getCoordList();
ArrayList< MogoLatLng > mogoLatLngs = new ArrayList<>();
for ( NaviLatLng latlng : coordList
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java
index 07919c3124..51425cae06 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java
@@ -86,7 +86,7 @@ public class MogoMarkersHandler implements IMogoMarkerClickListener, IMogoMarker
if ( marker == null ) {
return;
}
- if ( !mServicesMarkers.containsKey( tag ) ) {
+ if ( mServicesMarkers.get( tag ) == null ) {
mServicesMarkers.put( tag, new ArrayList< IMogoMarker >() );
}
mServicesMarkers.get( tag ).add( marker );
@@ -96,7 +96,7 @@ public class MogoMarkersHandler implements IMogoMarkerClickListener, IMogoMarker
if ( markers == null || markers.isEmpty() ) {
return;
}
- if ( !mServicesMarkers.containsKey( tag ) ) {
+ if ( mServicesMarkers.get( tag ) == null ) {
mServicesMarkers.put( tag, new ArrayList< IMogoMarker >() );
}
mServicesMarkers.get( tag ).addAll( markers );
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java
index abe7a663b8..ff989a920f 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java
@@ -11,44 +11,44 @@ public interface IMogoNaviListener {
/**
* 导航初始化失败
*/
- void onInitNaviFailure();
+ default void onInitNaviFailure(){}
/**
* 导航初始化成功
*/
- void onInitNaviSuccess();
+ default void onInitNaviSuccess(){}
/**
* 导航引导信息
*
* @param naviinfo
*/
- void onNaviInfoUpdate( MogoNaviInfo naviinfo );
+ default void onNaviInfoUpdate( MogoNaviInfo naviinfo ){}
/**
* 导航开始回调
*/
- void onStartNavi();
+ default void onStartNavi(){}
/**
* 导航停止:包括到达目的地和主动停止导航
*/
- void onStopNavi();
+ default void onStopNavi(){}
/**
* 路径规划成功
*/
- void onCalculateSuccess();
+ default void onCalculateSuccess(){}
/**
* 路径规划失败
*/
- void onoCalculateFailed();
+ default void onoCalculateFailed(){}
/**
* 巡航信息发生改变
* Deprecated, use {@link IMogoAimlessModeListener#onUpdateTraffic2(MogoTraffic)} instead.
*/
@Deprecated
- void onUpdateTraffic( MogoTraffic traffic );
+ default void onUpdateTraffic( MogoTraffic traffic ){}
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java
index 831d5d77a0..c0d261c1d6 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java
@@ -11,10 +11,10 @@ public interface IMogoNaviListener2 extends IMogoNaviListener {
/**
* 实际导航结束
*/
- void onArriveDestination();
+ default void onArriveDestination() { }
/**
* 模拟导航结束
*/
- void onEndEmulatorNavi();
+ default void onEndEmulatorNavi(){}
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
index 394772abaa..ec44cd59cb 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java
@@ -20,12 +20,14 @@ public class MogoCalculatePath {
/**
* 时间
*/
- private String mTime;
+ private String mFormattedTime;
+ private int mTime;
/**
* 距离
*/
- private String mDistance;
+ private String mFormattedDistance;
+ private int mDistance;
/**
* 红绿灯个数
@@ -69,20 +71,20 @@ public class MogoCalculatePath {
this.mStrategyName = mStrategyName;
}
- public String getTime() {
- return mTime;
+ public String getFormattedTime() {
+ return mFormattedTime;
}
- public void setTime( String mTime ) {
- this.mTime = mTime;
+ public void setFormattedTime( String mTime ) {
+ this.mFormattedTime = mTime;
}
- public String getDistance() {
- return mDistance;
+ public String getFormattedDistance() {
+ return mFormattedDistance;
}
- public void setDistance( String mDistance ) {
- this.mDistance = mDistance;
+ public void setFormattedDistance( String mDistance ) {
+ this.mFormattedDistance = mDistance;
}
public int getTrafficLights() {
@@ -125,4 +127,22 @@ public class MogoCalculatePath {
public void setPathId( int mPathId ) {
this.mPathId = mPathId;
}
+
+ public int getTime() {
+ return mTime;
+ }
+
+ public MogoCalculatePath setTime( int time ) {
+ this.mTime = time;
+ return this;
+ }
+
+ public int getDistance() {
+ return mDistance;
+ }
+
+ public MogoCalculatePath setDistance( int distance ) {
+ this.mDistance = distance;
+ return this;
+ }
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java
index bb3aa752d9..33d7bfff49 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMarkerManager.java
@@ -3,7 +3,6 @@ package com.mogo.map;
import android.content.Context;
import android.util.Log;
-import com.mogo.map.impl.amap.InterceptorHandler;
import com.mogo.map.impl.amap.overlay.RouteOverlayHelper;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerManager;
@@ -54,6 +53,7 @@ public class MogoMarkerManager implements IMogoMarkerManager {
try {
return MogoMap.getInstance().getMogoMap().addMarker( tag, options );
} catch ( Exception e ) {
+ Logger.e( TAG, Log.getStackTraceString( e ) );
return null;
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
index 3092323b9d..d5b4006ee4 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
@@ -57,7 +57,7 @@ public class AppNavigatorFragment extends MvpFragment {
// openSearchPanel();
// trackNavigatorClickEvent( 1 );
@@ -222,44 +222,44 @@ public class AppNavigatorFragment extends MvpFragment= 3) {
- index = index - CARD_SIZE;
- }
- //RecyclerView 的特性,如果是否在屏幕内
- //if (index < 0) {
- // index -= 2;
- //}
-
- Logger.d(TAG, "position--"
- + position
- + "index--"
- + index
- + "scroll-->"
- + scroller.getCurrentItem()
- + index);
-
- //scroller.setPendingScroll(getResources().getDimensionPixelSize(R.dimen.dp_137)*index);
- //layoutManager.scrollToPositionWithOffset(scroller.getCurrentItem() + index,0);
- //scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137)*index,0);
-
- if (Math.abs(index) == 1) {
- scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137) * index,
- 0, null, 10);
- } else {
- layoutManager.startSmoothPendingScroll(layoutManager.getCurrentPosition() + index);
- }
+// DiscreteScrollLayoutManager layoutManager =
+// (DiscreteScrollLayoutManager) scroller.getLayoutManager();
+//
+// int currentPosition = (scroller.getCurrentItem() - 2) % CARD_SIZE;
+//
+// int index = position - currentPosition;
+//
+// if (index == 0) {
+// return;
+// }
+// if (index <= -3) {
+// index += CARD_SIZE;
+// } else if (index >= 3) {
+// index = index - CARD_SIZE;
+// }
+// //RecyclerView 的特性,如果是否在屏幕内
+// //if (index < 0) {
+// // index -= 2;
+// //}
+//
+// Logger.d(TAG, "position--"
+// + position
+// + "index--"
+// + index
+// + "scroll-->"
+// + scroller.getCurrentItem()
+// + index);
+//
+// //scroller.setPendingScroll(getResources().getDimensionPixelSize(R.dimen.dp_137)*index);
+// //layoutManager.scrollToPositionWithOffset(scroller.getCurrentItem() + index,0);
+// //scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137)*index,0);
+//
+// if (Math.abs(index) == 1) {
+// scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137) * index,
+// 0, null, 10);
+// } else {
+// layoutManager.startSmoothPendingScroll(layoutManager.getCurrentPosition() + index);
+// }
//layoutManager.smoothScrollToPosition(scroller.getCurrentItem() + index);
//currentPosition = position;
}
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
index 35a825c7c5..1a0b739e7f 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
@@ -10,6 +10,7 @@
impleme
private View mHeader;
private View mCards;
- private View mCardsBkg;
private View mApps;
private View mEntrance;
private FrameLayout mFloatingLayout;
private FrameLayout mCoverUpLayout;
- private FrameLayout mCardCoverUpBottomLayout;
private View mLeftShadowFrame;
private View mTopShadowFrame;
@@ -180,14 +178,12 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mHeader = findViewById( R.id.module_main_id_header_fragment_container );
mCards = findViewById( R.id.module_main_id_cards_container );
- mCardsBkg = findViewById( R.id.module_main_id_cards_bkg );
mApps = findViewById( R.id.module_main_id_apps_fragment_container );
mEntrance = findViewById( R.id.module_main_id_entrance_fragment_container );
mFloatingLayout = findViewById( R.id.module_main_id_floating_view );
mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame );
mTopShadowFrame = findViewById( R.id.module_main_id_map_top_shadow_frame );
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
- mCardCoverUpBottomLayout = findViewById( R.id.module_main_id_card_cover_up_bottom );
// 避免事件穿透导致地图被滑动
mLeftShadowFrame.setOnClickListener( view -> {
@@ -204,8 +200,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mFloatingLayout.setVisibility( View.GONE );
mLeftShadowFrame.setVisibility( View.GONE );
mTopShadowFrame.setVisibility( View.GONE );
- mCardsBkg.setVisibility( View.GONE );
- mCardCoverUpBottomLayout.setVisibility( View.GONE );
}
// 显示布局
@@ -217,8 +211,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mFloatingLayout.setVisibility( View.VISIBLE );
mLeftShadowFrame.setVisibility( View.VISIBLE );
mTopShadowFrame.setVisibility( View.VISIBLE );
- mCardsBkg.setVisibility( View.VISIBLE );
- mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@Override
@@ -305,23 +297,21 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// 默认触发第一个卡片
mOnPageChangeListener.onPageSelected( 0 );
}
- mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@Override
public void hideCoverUpLayout() {
mCoverUpLayout.setVisibility( View.GONE );
- mCardsBkg.setVisibility( View.VISIBLE );
}
@Override
public void loadCardModules() {
List< IMogoModuleProvider > providers = mMogoModuleHandler.loadCardsModule();
- mCardModulesAdapter = new CardModulesAdapter( this, providers );
- mCardsContainer.setOffscreenPageLimit( providers.size() );
- mCardsContainer.setPageTransformer( true, mTransformer );
- mCardsContainer.setAdapter( mCardModulesAdapter );
+// mCardModulesAdapter = new CardModulesAdapter( this, providers );
+// mCardsContainer.setOffscreenPageLimit( providers.size() );
+// mCardsContainer.setPageTransformer( true, mTransformer );
+// mCardsContainer.setAdapter( mCardModulesAdapter );
}
@NonNull
diff --git a/modules/mogo-module-main/src/main/res/drawable-ldpi/module_main_card_cover_up_bottom.png b/modules/mogo-module-main/src/main/res/drawable-ldpi/module_main_card_cover_up_bottom.png
deleted file mode 100644
index 84957fe291..0000000000
Binary files a/modules/mogo-module-main/src/main/res/drawable-ldpi/module_main_card_cover_up_bottom.png and /dev/null differ
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_card_cover_up_bottom.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_card_cover_up_bottom.png
deleted file mode 100644
index e15483dbfb..0000000000
Binary files a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_card_cover_up_bottom.png and /dev/null differ
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index 6be848e190..603a0ecaed 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -37,12 +37,6 @@
android:layout_marginLeft="@dimen/module_main_card_container_marginLeft"
android:layout_marginTop="@dimen/module_main_card_container_marginTop">
-
-
-
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java
index 738d2ad4bc..a3a709ce12 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java
@@ -47,4 +47,6 @@ public class AMapConstants {
*/
public static final String COMMAND_START_NAVI = "com.ileja.navi.route.confirm";
+ public static final String COMMAND_CHOOSE_PATH = "com.zhidao.route.plan";
+
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/DataConstants.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/DataConstants.java
index 029bbdc252..9bc52fdf63 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/DataConstants.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/DataConstants.java
@@ -2,6 +2,9 @@ package com.mogo.module.navi.constants;
import android.net.Uri;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author zyz
* @since 2019-10-02
@@ -42,4 +45,32 @@ public class DataConstants {
public static final String COMPANY_ADDRESS_LATITUDE = "companyAddressLatitude";
public static final String COMPANY_ADDRESS_LONGITUDE = "companyAddressLongitude";
+ // 泛化语义
+ public static final String STRATEGY_THE_TIME_SHORTEST_PATH = "STRATEGY_THE_TIME_SHORTEST_PATH";
+ public static final String[] WORDS_STRATEGY_THE_TIME_SHORTEST_PATH = {"最快的"};
+ public static final String STRATEGY_THE_DISTANCE_SHORTEST_PATH = "STRATEGY_THE_DISTANCE_SHORTEST_PATH";
+ public static final String[] WORDS_STRATEGY_THE_DISTANCE_SHORTED_PATH = {"路程最短的"};
+
+ // 第x个选个
+ public static final String STRATEGY_THE_FIRST_PATH = "STRATEGY_THE_FIRST_PATH";
+ public static final String[] WORDS_STRATEGY_THE_FIRST_PATH = {"第一个"};
+ public static final String STRATEGY_THE_SECOND_PATH = "STRATEGY_THE_SECOND_PATH";
+ public static final String[] WORDS_STRATEGY_THE_SECOND_PATH = {"第二个"};
+ public static final String STRATEGY_THE_THIRD_PATH = "STRATEGY_THE_THIRD_PATH";
+ public static final String[] WORDS_STRATEGY_THE_THIRD_PATH = {"第三个"};
+
+ // 开始导航
+ public static final String STRATEGY_START_NAVI = "STRATEGY_START_NAVI";
+ public static final String[] WORDS_STRATEGY_START_NAVI = {"开始导航", "开始"};
+
+ public static final Map< String, String[] > sCmds = new HashMap<>();
+
+ static {
+ sCmds.put( STRATEGY_THE_TIME_SHORTEST_PATH, WORDS_STRATEGY_THE_TIME_SHORTEST_PATH );
+ sCmds.put( STRATEGY_THE_DISTANCE_SHORTEST_PATH, WORDS_STRATEGY_THE_DISTANCE_SHORTED_PATH );
+ sCmds.put( STRATEGY_THE_FIRST_PATH, WORDS_STRATEGY_THE_FIRST_PATH );
+ sCmds.put( STRATEGY_THE_SECOND_PATH, WORDS_STRATEGY_THE_SECOND_PATH );
+ sCmds.put( STRATEGY_THE_THIRD_PATH, WORDS_STRATEGY_THE_THIRD_PATH );
+ sCmds.put( STRATEGY_START_NAVI, WORDS_STRATEGY_START_NAVI );
+ }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/CalculatePathAdapter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/CalculatePathAdapter.java
index 338c0ff859..93d8ebb3da 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/CalculatePathAdapter.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/CalculatePathAdapter.java
@@ -4,7 +4,6 @@ import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import com.mogo.map.navi.MogoCalculatePath;
-import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.module.navi.R;
import com.mogo.module.navi.ui.adapter.base.RecycleBaseAdapter;
import com.mogo.module.navi.ui.adapter.base.RecycleViewHolder;
@@ -53,8 +52,8 @@ public class CalculatePathAdapter extends RecycleBaseAdapter
if (holder.getLayoutPosition() >= 2) {
mName.setVisibility(View.GONE);
}
- holder.setText(R.id.amap_calculate_item_strategy_time, item.getTime());
- holder.setText(R.id.amap_calculate_item_strategy_distance, item.getDistance());
+ holder.setText(R.id.amap_calculate_item_strategy_time, item.getFormattedTime());
+ holder.setText(R.id.amap_calculate_item_strategy_distance, item.getFormattedDistance());
holder.setText(R.id.amap_calculate_item_strategy_desc, item.getDesc());
if (TextUtils.isEmpty(item.getDesc())) {
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt
index f715aa8428..750335c1be 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt
@@ -11,25 +11,26 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.map.MogoLatLng
import com.mogo.map.navi.IMogoNaviListener
import com.mogo.map.navi.MogoCalculatePath
-import com.mogo.map.navi.MogoNaviInfo
-import com.mogo.map.navi.MogoTraffic
-import com.mogo.module.common.MogoModulePaths
+import com.mogo.map.navi.MogoNaviConfig
import com.mogo.module.common.map.MapCenterPointStrategy
import com.mogo.module.common.map.Scene
import com.mogo.module.navi.R
import com.mogo.module.navi.constants.AMapConstants
+import com.mogo.module.navi.constants.DataConstants
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.manager.SettingManager
import com.mogo.module.navi.ui.adapter.CalculatePathAdapter
import com.mogo.module.navi.ui.base.BaseFragment
import com.mogo.service.intent.IMogoIntentListener
import com.mogo.utils.UiThreadHandler
+import com.mogo.utils.logger.Logger
import kotlinx.android.synthetic.main.fragment_search_category.group_path
import kotlinx.android.synthetic.main.fragment_search_category.pb_path
import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
+import org.json.JSONObject
/**
* @author zyz
@@ -37,24 +38,34 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
*/
class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack, IMogoIntentListener {
+ var mTimeShortestPosition = -1
+ var mDistanceShortestPosition = -1
+
override fun onCmdSelected(cmd: String?) {
when (cmd) {
- "firstPath" -> {
+ DataConstants.STRATEGY_THE_FIRST_PATH -> {
selectItem(0)
startNavi()
-
}
- "secondPath" -> {
+ DataConstants.STRATEGY_THE_SECOND_PATH -> {
selectItem(1)
startNavi()
-
}
- "thirdPath" -> {
+ DataConstants.STRATEGY_THE_THIRD_PATH -> {
selectItem(2)
startNavi()
-
}
- "startNavi" -> {
+ DataConstants.STRATEGY_START_NAVI -> {
+ startNavi()
+ }
+ DataConstants.STRATEGY_THE_DISTANCE_SHORTEST_PATH -> {
+ // 路程最短
+ selectItem(mDistanceShortestPosition)
+ startNavi()
+ }
+ DataConstants.STRATEGY_THE_TIME_SHORTEST_PATH -> {
+ // 时间最短
+ selectItem(mTimeShortestPosition)
startNavi()
}
"retry" -> {
@@ -63,45 +74,15 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
"cancel" -> {
SearchServiceHolder.fragmentManager.clearAll()
}
-
}
-
}
private fun selectItem(index: Int) {
-
- if (mAdapter.list.size > index) {
+ if (mAdapter.list.size > index && index > 0) {
selectPath(mAdapter.list[index])
}
}
- override fun onCmdAction(speakText: String?) {
- }
-
- override fun onCmdCancel(speakText: String?) {
- }
-
- override fun onSpeakEnd(speakText: String?) {
- }
-
- override fun onSpeakSelectTimeOut(speakText: String?) {
- }
-
- override fun onInitNaviFailure() {
- }
-
- override fun onInitNaviSuccess() {
- }
-
- override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) {
- }
-
- override fun onStartNavi() {
- }
-
- override fun onStopNavi() {
- }
-
override fun onCalculateSuccess() {
var calculatedStrategies = SearchServiceHolder.getNavi().calculatedStrategies
if (calculatedStrategies != null && calculatedStrategies.size > 0) {
@@ -115,9 +96,33 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
return@postDelayed
}
SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId)
+
+ if (calculatedStrategies.size == 1) {
+ // 一条路线,自动开启导航
+ startNavi()
+ }
}, 500L)
+
+ if (calculatedStrategies.size > 1) {
+
+ var timeShortest = Integer.MAX_VALUE
+ var distanceShortest = Integer.MAX_VALUE
+
+ for (i in 0 until calculatedStrategies.size) {
+ if (timeShortest > calculatedStrategies[i].time) {
+ timeShortest = calculatedStrategies[i].time
+ mTimeShortestPosition = i
+ }
+ if (distanceShortest > calculatedStrategies[i].distance) {
+ distanceShortest = calculatedStrategies[i].distance
+ mDistanceShortestPosition = i
+ }
+ }
+
+ Logger.d(TAG, "mTimeShortestPosition = ${mTimeShortestPosition}, mDistanceShortestPosition = $mDistanceShortestPosition")
+ AIAssist.getInstance(context).speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size))
+ }
}
- AIAssist.getInstance(context).speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size))
pb_path.visibility = View.GONE
group_path.visibility = View.GONE
tv_navi_navi.text = getString(R.string.start_navi)
@@ -132,10 +137,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
pb_path.visibility = View.GONE
registerRetryVoice()
-
- }
-
- override fun onUpdateTraffic(traffic: MogoTraffic?) {
}
private lateinit var mAdapter: CalculatePathAdapter
@@ -143,24 +144,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
return R.layout.fragment_search_category
}
- val firstPath: String = "第一个"
- val secondPath: String = "第二个"
- val thirdPath: String = "第三个"
- val startNavi: String = "开始导航"
-
var mogoTip: MogoLatLng? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE)
-
}
// 是否开启导航
var isStartedNavi = false
- override fun onViewCreated(
- view: View,
- savedInstanceState: Bundle?) {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
iv_navi_back.setOnClickListener {
@@ -199,13 +192,14 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
SearchServiceHolder.getMarkerManger().removeMarkers()
- AIAssist.getInstance(context).registerUnWakeupCommand("firstPath", arrayOf(firstPath), this)
- AIAssist.getInstance(context).registerUnWakeupCommand("secondPath", arrayOf(secondPath), this)
- AIAssist.getInstance(context).registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this)
- AIAssist.getInstance(context).registerUnWakeupCommand("startNavi", arrayOf(startNavi, "开始"), this)
+ DataConstants.sCmds.entries.filter {
+ it != null && !TextUtils.isEmpty(it.key) && (it.value?.isNotEmpty() ?: false)
+ }.forEach {
+ AIAssist.getInstance(mContext).registerUnWakeupCommand(it.key, it.value, this@ChoosePathFragment)
+ }
SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_START_NAVI, this)
-
+ SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
}
private fun registerRetryVoice() {
@@ -214,7 +208,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
private fun unregisterRetryVoice() {
AIAssist.getInstance(context).unregisterUnWakeupCommand("retry")
-
}
private fun retry() {
@@ -227,7 +220,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
if (TextUtils.isEmpty(mAdapter.selectTag)) {
return
}
-// moveMapToRight()
SearchServiceHolder.getNavi().startNavi(!SettingManager.isMonitor())
SearchServiceHolder.getMapUIController().recoverLockMode()
@@ -253,21 +245,81 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
SearchServiceHolder.getNavi().clearCalculatePaths()
}
- AIAssist.getInstance(context).unregisterUnWakeupCommand("firstPath")
- AIAssist.getInstance(context).unregisterUnWakeupCommand("secondPath")
- AIAssist.getInstance(context).unregisterUnWakeupCommand("thirdPath")
- AIAssist.getInstance(context).unregisterUnWakeupCommand("startNavi")
+ DataConstants.sCmds.entries.filter {
+ it != null && !TextUtils.isEmpty(it.key) && (it.value?.isNotEmpty() ?: false)
+ }.forEach {
+ AIAssist.getInstance(mContext).unregisterUnWakeupCommand(it.key)
+ }
SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_START_NAVI, this)
+ SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
}
override fun onIntentReceived(intentStr: String?, intent: Intent?) {
- if (TextUtils.equals(AMapConstants.COMMAND_START_NAVI, intentStr)) {
- startNavi()
+ when (intentStr) {
+ AMapConstants.COMMAND_START_NAVI -> {
+ startNavi()
+ }
+ AMapConstants.COMMAND_CHOOSE_PATH -> {
+ choosePath(intent)
+ }
+ }
+ }
+
+ private fun choosePath(intent: Intent?) {
+ var dataJsonStr = intent?.getStringExtra("data") ?: ""
+ try {
+ var jsonObj = JSONObject(dataJsonStr)
+ var routePlan = jsonObj.optString("route_plan", " ")
+ when (routePlan) {
+ "最快" -> {
+ // 时间最短
+ selectItem(mTimeShortestPosition)
+ startNavi()
+ }
+ "不走高速" -> {
+ // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。
+ // 避免收费 | 1
+ // 多策略算路 | 2
+ // 不走高速 | 3
+ // 躲避拥堵 | 4
+ // 不走高速且避免收费 | 5
+ // 不走高速且躲避拥堵 | 6
+ // 躲避收费和拥堵 | 7
+ // 不走高速躲避收费和拥堵 | 8
+ // 高速优先 | 20
+ // 躲避拥堵且高速优先 | 24
+ var prefer = 3
+ val config = MogoNaviConfig().congestion(prefer == 4)
+ .cost(prefer == 1 || prefer == 7)
+ .highSpeed(prefer == 20)
+ .avoidSpeed(prefer == 3)
+ SearchServiceHolder.getNavi().reCalculateRoute(config)
+ }
+ "最近" -> {
+ // 路程最短
+ selectItem(mDistanceShortestPosition)
+ startNavi()
+ }
+ "躲避拥堵" -> {
+ var prefer = 4
+ val config = MogoNaviConfig().congestion(prefer == 4)
+ .cost(prefer == 1 || prefer == 7)
+ .highSpeed(prefer == 20)
+ .avoidSpeed(prefer == 3)
+ SearchServiceHolder.getNavi().reCalculateRoute(config)
+ }
+ }
+ } catch (e: Exception) {
+
}
}
companion object {
+
+ @JvmField
+ val TAG: String = "ChoosePathFragment"
+
fun newInstance(searchPoi: MogoLatLng): Fragment {
MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CALCULATE_PATH)
var bundle = Bundle()
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 0298414d3b..77024d794b 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
@@ -3,6 +3,7 @@ package com.mogo.module.service.marker;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
+import android.util.Log;
import android.view.animation.BounceInterpolator;
import android.view.animation.OvershootInterpolator;
@@ -257,20 +258,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
}
- /**
- * 关闭 Marker 详情
- *
- * @param marker 要关闭的Marker
- */
- public synchronized void closeMarkerSelect( IMogoMarker marker ) {
- // 将上次选中 Marker 设置为未选中状态
- if ( marker != null ) {
- Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker );
- closeMarker( marker );
- mLastCheckMarker = null;
- }
- }
-
// 展开气泡
private void openMarker( IMogoMarker mogoMarker ) {
if ( mogoMarker == null ) {
@@ -358,7 +345,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
} else {
mLastCheckMarker = null;
// 清空所有地图上绘制的Marker
- MarkerServiceHandler.getMarkerManager().removeMarkers();
+ MarkerServiceHandler.getMarkerManager().removeMarkersExcept( ModuleNames.CARD_TYPE_USER_DATA );
}
drawMarkerByCurrentType( mLastDataResult );
@@ -402,29 +389,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
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();
-
- switch ( mCurrentModuleName ) {
- case ServiceConst.CARD_TYPE_BUSINESS_OPERATION:
- drawAllMarker( markerCardResult );
- break;
- case ServiceConst.CARD_TYPE_NOVELTY:
- 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);
-// break;
- case ServiceConst.CARD_TYPE_ROAD_CONDITION:
- drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
- break;
- case ServiceConst.CARD_TYPE_SHARE_MUSIC:
- drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD );
- break;
- }
+ drawAllMarker( markerCardResult );
}
/**
@@ -457,6 +422,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
double nearlyDistance = Float.MAX_VALUE;
int size = getAppropriateSize( maxAmount, onlineCarList );
+
+ Map< String, IMogoMarker > existCarMap = purgeCarsData( onlineCarList );
+
for ( int i = 0; i < size; i++ ) {
MarkerOnlineCar markerOnlineCar = onlineCarList.get( i );
MarkerLocation markerLocation = markerOnlineCar.getLocation();
@@ -470,9 +438,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() );
}
- IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity );
-// iMogoMarker.setInfoWindowAdapter(this);
- startSmooth( iMogoMarker, markerOnlineCar, markerLocation );
+ if ( markerOnlineCar.getUserInfo() == null || TextUtils.isEmpty( markerOnlineCar.getUserInfo().getSn() ) ) {
+ continue;
+ }
+ IMogoMarker mogoMarker = existCarMap.get( markerOnlineCar.getUserInfo().getSn() );
+ if ( mogoMarker == null ) {
+ Logger.d( TAG, "car [%s] need be create.", markerOnlineCar.getUserInfo().getSn() );
+ mogoMarker = drawMapMarker( markerShowEntity );
+ }
+ startSmooth( mogoMarker, markerOnlineCar, markerLocation );
// 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示
try {
@@ -489,7 +463,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
// 进行比较,保留最近的一个数据
if ( calculateDistance < nearlyDistance ) {
nearlyDistance = calculateDistance;
- mNearlyMarker = iMogoMarker;
+ mNearlyMarker = mogoMarker;
}
} catch ( Exception e ) {
@@ -519,6 +493,66 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
}
+ /**
+ * 根据新的在线车辆列表,选出已存在的在线车辆,并从视图和内存中移除不存在的在线车辆
+ *
+ * @param newCarsList
+ * @return
+ */
+ private Map< String, IMogoMarker > purgeCarsData( List< MarkerOnlineCar > newCarsList ) {
+
+ final long start = System.currentTimeMillis();
+ Map< String, IMogoMarker > existCarsMap = new HashMap<>();
+ List< IMogoMarker > allCarsList = MarkerServiceHandler.getMarkerManager().getMarkers( ModuleNames.CARD_TYPE_USER_DATA );
+ if ( allCarsList == null || allCarsList.isEmpty() ) {
+ return existCarsMap;
+ }
+ if ( newCarsList == null || newCarsList.isEmpty() ) {
+ return existCarsMap;
+ }
+
+ Map< String, IMogoMarker > allCarsMap = new HashMap<>();
+ for ( IMogoMarker marker : allCarsList ) {
+ String sn = getCarSnFromMarker( marker );
+ Logger.d( TAG, "sn = [%s]", sn );
+ allCarsMap.put( sn, marker );
+ }
+ for ( MarkerOnlineCar markerOnlineCar : newCarsList ) {
+ String sn = markerOnlineCar.getUserInfo().getSn();
+ if ( allCarsMap.containsKey( sn ) ) {
+ Logger.d( TAG, " car [%s] is cached.", sn );
+ existCarsMap.put( sn, allCarsMap.get( sn ) );
+ }
+ }
+ for ( String sn : allCarsMap.keySet() ) {
+ if ( !existCarsMap.containsKey( sn ) ) {
+ IMogoMarker dirtyMarker = allCarsMap.get( sn );
+ allCarsList.remove( dirtyMarker );
+ dirtyMarker.destroy();
+ Logger.d( TAG, " car [%s] is destroy.", sn );
+ }
+ }
+ allCarsMap.clear();
+ Logger.i( "timer", "purge data cost " + ( System.currentTimeMillis() - start ) + "ms" );
+ return existCarsMap;
+ }
+
+ private String getCarSnFromMarker( IMogoMarker marker ) {
+ if ( marker == null || marker.getObject() == null || marker.isDestroyed() ) {
+ return null;
+ }
+ if ( !( marker.getObject() instanceof MarkerShowEntity ) ) {
+ return null;
+ }
+ if ( !( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() instanceof MarkerOnlineCar ) ) {
+ return null;
+ }
+ if ( ( ( MarkerOnlineCar ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ).getUserInfo() == null ) {
+ return null;
+ }
+ return ( ( MarkerOnlineCar ) ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() ).getUserInfo().getSn();
+ }
+
/**
* 探路数据
*
@@ -869,7 +903,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
if ( result == null ) {
return;
}
- removeCarMarkers();
+
List< MarkerOnlineCar > onlineCarList = result.getOnlineCar();
if ( !MarkerServiceHandler.getMogoStatusManager().isADASShow() ) {
dispatchDataToBis( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList );