From fc132143f66dc39c9fc2cfae082fec5d20725aed Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 08:24:56 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E4=BC=98=E5=8C=96:=20=E9=94=81=E8=BD=A6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=81=E8=A7=A3=E5=86=B3=E6=90=9C=E7=B4=A2?= =?UTF-8?q?"=E6=9F=90=E6=9F=90=E5=9C=B0=E6=96=B9=E5=A0=B5=E4=B8=8D?= =?UTF-8?q?=E5=A0=B5"=EF=BC=8C=E8=A7=86=E5=9B=BE=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=90=8E=E8=A2=AB=E6=8B=89=E5=9B=9E=E5=BD=93=E5=89=8D=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E5=85=B6=E4=BB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/connection/socket/SocketManager.java | 1 + .../com/mogo/module/extensions/entrance/EntranceFragment.java | 1 + .../main/java/com/mogo/module/service/MogoServiceProvider.java | 1 + .../com/mogo/module/tanlu/fragment/TanluCardViewFragment.java | 1 + .../java/com/mogo/service/connection}/IMessageResponse.java | 2 +- 5 files changed, 5 insertions(+), 1 deletion(-) rename {foudations/mogo-connection/src/main/java/com/mogo/connection/socket => services/mogo-service-api/src/main/java/com/mogo/service/connection}/IMessageResponse.java (85%) diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java index dc9cda6d68..3a2b0a47e8 100644 --- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java +++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java @@ -5,6 +5,7 @@ import android.content.Context; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; import com.mogo.map.listener.IMogoMapListener; +import com.mogo.service.connection.IMessageResponse; import com.mogo.service.connection.IMogoMsgAckListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.connection.IMogoSocketManager; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index a937660e77..92ada4c8a9 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -136,6 +136,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent if ( location != null ) { mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); mMApUIController.changeZoom( 16.0f ); + mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); mMApUIController.recoverLockMode(); // mMApUIController.moveToCenter( new MogoLatLng( location.getLatitude(), location.getLongitude() ) ); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 23466988e7..1ced0f5533 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -193,6 +193,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, @Override public void onSuccess() { mLoopRequest = false; + Logger.d(TAG, "request Success."); invokeAutoRefreshStrategy(); } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java index 590548d498..57b74941f0 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java @@ -1303,6 +1303,7 @@ import static com.mogo.module.tanlu.video.VideoInitKt.initVideo; optionList.add(options); } Logger.d(TAG, "getVoiceControlRoadData optionList.size() = " + optionList.size()); + mMogoStatusManager.setUserInteractionStatus(TanluConstants.MODEL_NAME, true, false); mMarkerManager.addMarkers(TanluConstants.MODEL_NAME, optionList, true); //直接使用当前数据list,作为切换的数据源,切换左侧列表到最新的数据 diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMessageResponse.java similarity index 85% rename from foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java rename to services/mogo-service-api/src/main/java/com/mogo/service/connection/IMessageResponse.java index 58dad71fea..053f90ec35 100644 --- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/IMessageResponse.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMessageResponse.java @@ -1,4 +1,4 @@ -package com.mogo.connection.socket; +package com.mogo.service.connection; /** * @author congtaowang From 6e3a145330afdffa1b151c0c090745255453856f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 11:07:06 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86bug=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E4=BC=9A=E5=BD=B1=E5=93=8D=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E4=BA=8B=E4=BB=B6=E7=9A=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/module/service/MogoServiceProvider.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 90a125dc2f..b4f7d07bd5 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -427,7 +427,6 @@ public class MogoServiceProvider implements IMogoModuleProvider, @Override public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { - Logger.d(TAG, "onMapChanged==latLng:" + latLng+" mStatusManager.isUserInteracted()==="+mStatusManager.isUserInteracted()); if ( mIsCameraInited ) { mLastZoomLevel = zoom; mLastCustomRefreshCenterLocation = latLng; From 95781acafd47aabd7cd30587e8af7fc4772458a8 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 11:32:05 +0800 Subject: [PATCH 03/19] opt --- .../java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java | 2 ++ .../com/mogo/module/service/marker/MapMarkerManager.java | 6 +++--- .../mogo/service/impl/statusmanager/MogoStatusManager.java | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 555be3ac0f..a88ee4e14b 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -352,6 +352,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void changeZoom(float zoom) { + Logger.d( TAG, "changeZoom %s", zoom ); getMap().changeZoom(zoom); } @@ -403,6 +404,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void moveToCenter(MogoLatLng latLng) { + Logger.d( TAG, "move to center %s", latLng ); if (latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d) { Logger.e(TAG, "latlng = null or is illegal"); return; 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 e049d34bb1..697c4438ad 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 @@ -119,7 +119,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag Logger.i(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker); try { // 移动地图到指定位置 - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, true); + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false); MarkerServiceHandler.getMapUIController().moveToCenter(marker.getPosition()); if (lastMarker != null) { @@ -510,8 +510,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag if (isFirstMarker && isOnLineCard) { if (nearlyMogoMarker != null) { Logger.w(TAG, "ACC ON,或者语音搜索触发,默认选中最近的在线车辆nearlyMogoMarker:" + nearlyMogoMarker); - onMarkerClicked(nearlyMogoMarker); - MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker); +// onMarkerClicked(nearlyMogoMarker); +// MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker); isFirstMarker = false; } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index c64afed7cb..75942c569f 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -8,6 +8,7 @@ import com.mogo.service.MogoServicePaths; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.logger.Logger; import java.util.ArrayList; import java.util.Iterator; @@ -24,6 +25,8 @@ import java.util.concurrent.ConcurrentHashMap; @Route( path = MogoServicePaths.PATH_STATUS_MANAGER ) public class MogoStatusManager implements IMogoStatusManager { + private static final String TAG = "MogoStatusManager"; + /** * 状态记录 */ @@ -123,6 +126,7 @@ public class MogoStatusManager implements IMogoStatusManager { @Override public void setUserInteractionStatus( String tag, boolean interrupt, boolean callback ) { + Logger.d( TAG, "setUserInteractionStatus handler = %s, status = %s, callback = %s", tag, interrupt, callback ); mStatus.put( StatusDescriptor.USER_INTERACTED, interrupt ); if ( callback ) { invokeStatusChangedListener( StatusDescriptor.USER_INTERACTED, interrupt ); From d84c243799c61f82ce52145c6ff302401c56dfa4 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 11:45:12 +0800 Subject: [PATCH 04/19] opt --- .../com/mogo/connection/socket/SocketManager.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java index 3a2b0a47e8..48b58bbea9 100644 --- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java +++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java @@ -74,6 +74,7 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac private SocketConnManager mSocketConnManager; + private long mLastMsgId = Long.MAX_VALUE; @Override public void init( Context context, String appId ) { @@ -91,15 +92,17 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac List< IMogoOnMessageListener > listeners = mListeners.get( msgType ); if ( listeners != null && !listeners.isEmpty() ) { Iterator< IMogoOnMessageListener > iterator = listeners.iterator(); + if ( msgId != 0 ) { //兼容老版本 + if ( mLastMsgId == msgId ) { // 避免消息重发 + return; + } + } + mLastMsgId = msgId; while ( iterator.hasNext() ) { IMogoOnMessageListener listener = iterator.next(); if ( listener != null ) { - Object obj = GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ); - if ( obj instanceof IMessageResponse ) { - ( ( IMessageResponse ) obj ).setMsgId( msgId ); - } Logger.d(TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId); - listener.onMsgReceived( obj ); + listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) ); } } } From d481cf1c70f6419d8a5bc9c3a5499cebd5c1ddb9 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 13:39:23 +0800 Subject: [PATCH 05/19] opt --- .../mogo/connection/socket/SocketManager.java | 20 +++++++++++++++---- .../module/service/MogoServiceProvider.java | 6 ++++++ .../service/marker/MapMarkerManager.java | 4 ++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java index 48b58bbea9..472355ef1c 100644 --- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java +++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java @@ -74,7 +74,9 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac private SocketConnManager mSocketConnManager; - private long mLastMsgId = Long.MAX_VALUE; + public static final int MAX_CAP = 64; //保证充足的容量应对非常延时的推送 + private ArrayList< Long > mReceivedMsgId = new ArrayList<>( MAX_CAP ); + private int mCurrentIndex = 0; @Override public void init( Context context, String appId ) { @@ -93,15 +95,15 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac if ( listeners != null && !listeners.isEmpty() ) { Iterator< IMogoOnMessageListener > iterator = listeners.iterator(); if ( msgId != 0 ) { //兼容老版本 - if ( mLastMsgId == msgId ) { // 避免消息重发 + if ( mReceivedMsgId.contains( msgId ) ) { // 避免消息重发 return; } + cacheLastReceivedMsgId( msgId ); } - mLastMsgId = msgId; while ( iterator.hasNext() ) { IMogoOnMessageListener listener = iterator.next(); if ( listener != null ) { - Logger.d(TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId); + Logger.d( TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId ); listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) ); } } @@ -111,6 +113,16 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac } } + private void cacheLastReceivedMsgId( long msgId ) { + if ( msgId == 0 ) { + return; + } + synchronized ( this ){ + mReceivedMsgId.add( mCurrentIndex % MAX_CAP, msgId ); + mCurrentIndex++; + } + } + @Override public void onAck( byte[] headerBytes, byte[] payloadBytes ) { try { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 7c2a72cb31..93930a4f42 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -428,6 +428,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, @Override public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { + if ( mIsCameraInited ) { mLastZoomLevel = zoom; mLastCustomRefreshCenterLocation = latLng; @@ -444,6 +445,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, if ( mStatusManager.isUserInteracted() ) { mLastCustomRefreshCenterLocation = latLng; mLastZoomLevel = zoom; + refreshCameraPosition(); return; } @@ -487,6 +489,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, if ( factor == 0.0f ) { return false; } + Logger.d( TAG, "invokeRefreshWhenTranslationByUser,mLastCustomRefreshCenterLocation = %s, latLng = %s", mLastCustomRefreshCenterLocation, latLng ); float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); return distance > factor; } catch ( Exception e ) { @@ -500,6 +503,9 @@ public class MogoServiceProvider implements IMogoModuleProvider, if ( location == null ) { return; } + + Logger.d( TAG, "onLocationChanged = %s", location ); + // 自动刷新触发 final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() ); if ( mLastAutoRefreshLocation == 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 697c4438ad..99d1c23482 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 @@ -510,8 +510,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag if (isFirstMarker && isOnLineCard) { if (nearlyMogoMarker != null) { Logger.w(TAG, "ACC ON,或者语音搜索触发,默认选中最近的在线车辆nearlyMogoMarker:" + nearlyMogoMarker); -// onMarkerClicked(nearlyMogoMarker); -// MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker); + onMarkerClicked(nearlyMogoMarker); + MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker); isFirstMarker = false; } } From 6fd9b81d8a7371aac2c2a44017f4fac19486f8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 13:45:08 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86bug=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E4=B9=8B=E5=89=8D=E4=BB=A5=E4=B8=BA?= =?UTF-8?q?=E6=98=AF=E6=99=BA=E8=A1=8C=E9=A1=BA=E5=BA=8F=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E5=88=B7=E6=96=B0Marker=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E7=BA=BF=E7=A8=8B=E9=98=BB=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/marker/MapMarkerManager.java | 1 - 1 file changed, 1 deletion(-) 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 99d1c23482..40d3d632c4 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 @@ -505,7 +505,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag highlightedMarker(mLastHighLightModule, true); try { - Thread.sleep(500); // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker if (isFirstMarker && isOnLineCard) { if (nearlyMogoMarker != null) { From 80fa4a292bee16017fe267066ebb733cf7d811b9 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 15:47:56 +0800 Subject: [PATCH 07/19] opt --- .../java/com/mogo/module/service/MogoServiceProvider.java | 5 ++--- .../com/mogo/module/service/network/RefreshModel.java | 8 ++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 93930a4f42..d50fa4c3f6 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -193,13 +193,14 @@ public class MogoServiceProvider implements IMogoModuleProvider, @Override public void onSuccess() { mLoopRequest = false; - Logger.d(TAG, "request Success."); + Logger.d( TAG, "request Success." ); invokeAutoRefreshStrategy(); } @Override public void onFail() { if ( mLoopRequest ) { + Logger.d( TAG, "onFail and loop" ); mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOOP_REQUEST, ServiceConst.LOOP_INTERVAL ); } else { invokeAutoRefreshStrategy(); @@ -504,8 +505,6 @@ public class MogoServiceProvider implements IMogoModuleProvider, return; } - Logger.d( TAG, "onLocationChanged = %s", location ); - // 自动刷新触发 final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() ); if ( mLastAutoRefreshLocation == null ) { 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 f1630b83a6..9d0431d568 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 @@ -77,6 +77,14 @@ public class RefreshModel { } } + @Override + public void onError( Throwable e ) { + super.onError( e ); + if (callback != null) { + callback.onFail(); + } + } + @Override public void onError(String message, int code) { super.onError(message, code); From 3aa3190f6bdea0ac9ec6fb154c8ce3154e98804b Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 16:37:00 +0800 Subject: [PATCH 08/19] opt --- .../java/com/mogo/module/service/MogoServiceProvider.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index d50fa4c3f6..b8b9771f59 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -220,6 +220,8 @@ public class MogoServiceProvider implements IMogoModuleProvider, // 延时状态 private boolean mRefreshRemainingTimeStatus = false; + private boolean mTouchDownEvent = false; + @Override public final Fragment createFragment( Context context, Bundle data ) { return null; @@ -392,6 +394,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, public void onTouch( MotionEvent motionEvent ) { switch ( motionEvent.getActionMasked() ) { case MotionEvent.ACTION_DOWN: + mTouchDownEvent = true; if ( mLastZoomLevel == 0 ) { mLastZoomLevel = mUiController.getZoomLevel(); Logger.i( TAG, "初始化缩放级别 为:%f", mLastZoomLevel ); @@ -460,7 +463,8 @@ public class MogoServiceProvider implements IMogoModuleProvider, mLastZoomLevel = zoom; } else if ( mLastZoomLevel == zoom ) { // 手动平移 - if ( invokeRefreshWhenTranslationByUser( latLng ) ) { + if ( invokeRefreshWhenTranslationByUser( latLng ) && mTouchDownEvent ) { + mTouchDownEvent = false; notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback ); mLastCustomRefreshCenterLocation = latLng; } From 30d96b01b8fd90c0a1f0617a8fb77fe2d8ebc89d Mon Sep 17 00:00:00 2001 From: zhangyuanzhen Date: Fri, 21 Feb 2020 17:18:35 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index eb5fcc1de3..890c5169d0 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -212,12 +212,12 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } public void stopNavi() { + mNaviOverlayHelper.clearCalculatedOverlay(); setStopped( true ); setNaviing( false ); mAMapNavi.stopNavi(); MogoNaviListenerHandler.getInstance().onStopNavi(); AMapMessageManager.getInstance().postNaviStopped(); - mNaviOverlayHelper.clearCalculatedOverlay(); } public void handleClickedPolyline( Polyline polyline ) { From 514018250b6d6af6c21c4b794aa3bf758065b4f0 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 18:02:29 +0800 Subject: [PATCH 10/19] opt --- .../java/com/mogo/module/service/MogoServiceProvider.java | 6 +----- .../mogo/module/tanlu/fragment/TanluCardViewFragment.java | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index b8b9771f59..d50fa4c3f6 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -220,8 +220,6 @@ public class MogoServiceProvider implements IMogoModuleProvider, // 延时状态 private boolean mRefreshRemainingTimeStatus = false; - private boolean mTouchDownEvent = false; - @Override public final Fragment createFragment( Context context, Bundle data ) { return null; @@ -394,7 +392,6 @@ public class MogoServiceProvider implements IMogoModuleProvider, public void onTouch( MotionEvent motionEvent ) { switch ( motionEvent.getActionMasked() ) { case MotionEvent.ACTION_DOWN: - mTouchDownEvent = true; if ( mLastZoomLevel == 0 ) { mLastZoomLevel = mUiController.getZoomLevel(); Logger.i( TAG, "初始化缩放级别 为:%f", mLastZoomLevel ); @@ -463,8 +460,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, mLastZoomLevel = zoom; } else if ( mLastZoomLevel == zoom ) { // 手动平移 - if ( invokeRefreshWhenTranslationByUser( latLng ) && mTouchDownEvent ) { - mTouchDownEvent = false; + if ( invokeRefreshWhenTranslationByUser( latLng ) ) { notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback ); mLastCustomRefreshCenterLocation = latLng; } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java index 57b74941f0..4849953838 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java @@ -616,6 +616,7 @@ import static com.mogo.module.tanlu.video.VideoInitKt.initVideo; private void moveToMarcker(double lat, double lon) { MogoLatLng latLng = new MogoLatLng(lat, lon); + mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); mMApUIController.moveToCenter(latLng); } From 50d4463ac6ffef1c0a7e591736a65e0e6f8b3c97 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 21 Feb 2020 20:33:38 +0800 Subject: [PATCH 11/19] opt --- .../map/impl/amap/AMapNaviViewWrapper.java | 412 ++++++++++-------- 1 file changed, 221 insertions(+), 191 deletions(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index a88ee4e14b..06d969b1d5 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -5,6 +5,7 @@ import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Point; import android.os.Bundle; +import android.os.SystemClock; import android.view.MotionEvent; import android.view.View; import android.view.animation.Interpolator; @@ -23,6 +24,7 @@ import com.amap.api.maps.model.animation.TranslateAnimation; import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewListener; import com.amap.api.navi.AMapNaviViewOptions; +import com.amap.api.navi.enums.AMapNaviViewShowMode; import com.amap.api.navi.enums.AimLessMode; import com.amap.api.navi.model.NaviInfo; import com.mogo.map.IMogoMap; @@ -49,16 +51,16 @@ import retrofit2.http.HEAD; * 代理高德导航地图 */ public class AMapNaviViewWrapper implements IMogoMapView, - IMogoMapUIController, - AMap.OnMarkerClickListener, - AMap.OnMapLoadedListener, - AMap.OnMapTouchListener, - AMap.OnPOIClickListener, - AMap.OnMapClickListener, - AMap.OnPolylineClickListener, - AMapNaviViewListener, - AMapMessageListener, - AMap.OnCameraChangeListener { + IMogoMapUIController, + AMap.OnMarkerClickListener, + AMap.OnMapLoadedListener, + AMap.OnMapTouchListener, + AMap.OnPOIClickListener, + AMap.OnMapClickListener, + AMap.OnPolylineClickListener, + AMapNaviViewListener, + AMapMessageListener, + AMap.OnCameraChangeListener { private static final String TAG = "AMapNaviViewWrapper"; @@ -67,95 +69,95 @@ public class AMapNaviViewWrapper implements IMogoMapView, private AMapMarkerClickHandler mMarkerClickHandler; - public AMapNaviViewWrapper(AMapNaviView mapView) { + public AMapNaviViewWrapper( AMapNaviView mapView ) { this.mMapView = mapView; - this.mIMap = new AMapWrapper(mMapView.getMap(), mMapView, this); + this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView, this ); } private void initMapView() { - if (mMapView != null) { + if ( mMapView != null ) { AMapNaviViewOptions options = mMapView.getViewOptions(); - if (options != null) { + if ( options != null ) { // 设置是否开启自动黑夜模式切换,默认为false,不自动切换 - options.setAutoNaviViewNightMode(false); + options.setAutoNaviViewNightMode( false ); // 设置6秒后是否自动锁车 - options.setAutoLockCar(false); + options.setAutoLockCar( false ); // 设置路线上的摄像头气泡是否显示 - options.setCameraBubbleShow(true); + options.setCameraBubbleShow( true ); // 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。 // options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() ); // 设置自车的图片对象 - options.setCarBitmap(BitmapFactory.decodeResource(getContext().getResources(), - R.drawable.ic_amap_navi_cursor)); + options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), + R.drawable.ic_amap_navi_cursor ) ); // 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。 - options.setCompassEnabled(false); + options.setCompassEnabled( false ); // 黑夜模式 - options.setNaviNight(true); + options.setNaviNight( true ); //设置路况光柱条是否显示(只适用于驾车导航,需要联网)。 - options.setTrafficBarEnabled(false); + options.setTrafficBarEnabled( false ); // 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。 - options.setTrafficLayerEnabled(false); + options.setTrafficLayerEnabled( false ); // 设置导航界面是否显示路线全览按钮。 - options.setRouteListButtonShow(false); + options.setRouteListButtonShow( false ); // 设置导航状态下屏幕是否一直开启。 - options.setScreenAlwaysBright(true); + options.setScreenAlwaysBright( true ); // 设置交通播报是否打开(只适用于驾车导航,需要联网)。 - options.setTrafficInfoUpdateEnabled(true); + options.setTrafficInfoUpdateEnabled( true ); // 设置摄像头播报是否打开(只适用于驾车导航)。 - options.setCameraInfoUpdateEnabled(true); + options.setCameraInfoUpdateEnabled( true ); // 设置菜单按钮是否在导航界面显示。 - options.setSettingMenuEnabled(false); + options.setSettingMenuEnabled( false ); // 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。 - options.setTrafficLine(true); + options.setTrafficLine( true ); // 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。 - options.setLeaderLineEnabled(-1); + options.setLeaderLineEnabled( -1 ); // 设置导航界面UI是否显示。 - options.setLayoutVisible(false); + options.setLayoutVisible( false ); // 设置是否自动画路 - options.setAutoDrawRoute(false); + options.setAutoDrawRoute( false ); // 设置是否显示路口放大图(实景图) - options.setRealCrossDisplayShow(false); + options.setRealCrossDisplayShow( false ); // 设置是否显示路口放大图(路口模型图) - options.setModeCrossDisplayShow(false); + options.setModeCrossDisplayShow( false ); // 设置是否显示道路信息view - options.setLaneInfoShow(false); + options.setLaneInfoShow( false ); // 设置是否自动改变缩放等级 - options.setAutoChangeZoom(true); + options.setAutoChangeZoom( true ); // 设置是否自动全览模式,即在算路成功后自动进入全览模式 - options.setAutoDisplayOverview(false); + options.setAutoDisplayOverview( false ); // 设置路线转向箭头隐藏和显示 - options.setNaviArrowVisible(false); + options.setNaviArrowVisible( false ); // 通过路线是否自动置灰,仅支持驾车导航 - options.setAfterRouteAutoGray(true); - options.setZoom(16); - options.setPointToCenter(0.5D, 0.5D); + options.setAfterRouteAutoGray( true ); + options.setZoom( 16 ); + options.setPointToCenter( 0.5D, 0.5D ); // 2D模式 - options.setTilt(0); - mMapView.setViewOptions(options); + options.setTilt( 0 ); + mMapView.setViewOptions( options ); } - mMapView.setRouteOverlayVisible(false); - mMapView.setCarOverlayVisible(false); - mMapView.setNaviMode(AMapNaviView.CAR_UP_MODE); + mMapView.setRouteOverlayVisible( false ); + mMapView.setCarOverlayVisible( false ); + mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); } } private void initListeners() { - mMapView.setOnMarkerClickListener(this); + mMapView.setOnMarkerClickListener( this ); mMarkerClickHandler = new AMapMarkerClickHandler(); - mMapView.setOnMapLoadedListener(this); - mMapView.setOnMapTouchListener(this); - mMapView.setOnPolylineClickListener(this); - mMapView.setAMapNaviViewListener(this); - mMapView.setOnCameraChangeListener(this); + mMapView.setOnMapLoadedListener( this ); + mMapView.setOnMapTouchListener( this ); + mMapView.setOnPolylineClickListener( this ); + mMapView.setAMapNaviViewListener( this ); + mMapView.setOnCameraChangeListener( this ); final AMap aMap = mMapView.getMap(); - if (aMap != null) { - aMap.setOnPOIClickListener(this); - aMap.setOnMapClickListener(this); - aMap.setOnCameraChangeListener(this); + if ( aMap != null ) { + aMap.setOnPOIClickListener( this ); + aMap.setOnMapClickListener( this ); + aMap.setOnCameraChangeListener( this ); } - AMapMessageManager.getInstance().registerAMapMessageListener(this); + AMapMessageManager.getInstance().registerAMapMessageListener( this ); } private Context getContext() { @@ -173,10 +175,10 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void onCreate(Bundle bundle) { - if (mMapView != null) { - mMapView.onCreate(bundle); - Logger.d(TAG, "map onCreate"); + public void onCreate( Bundle bundle ) { + if ( mMapView != null ) { + mMapView.onCreate( bundle ); + Logger.d( TAG, "map onCreate" ); initMapView(); initListeners(); initMyLocation(); @@ -185,47 +187,47 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void onResume() { - if (mMapView != null) { + if ( mMapView != null ) { mMapView.onResume(); - Logger.d(TAG, "map onResume"); + Logger.d( TAG, "map onResume" ); } } @Override public void onPause() { - if (mMapView != null) { + if ( mMapView != null ) { mMapView.onPause(); - Logger.d(TAG, "map onPause"); + Logger.d( TAG, "map onPause" ); } } @Override public void onDestroy() { - if (mMapView != null) { + if ( mMapView != null ) { mMapView.onDestroy(); - Logger.d(TAG, "map onDestroy"); + Logger.d( TAG, "map onDestroy" ); } } @Override - public void onSaveInstanceState(Bundle outState) { - if (mMapView != null) { - mMapView.onSaveInstanceState(outState); - Logger.d(TAG, "map onSaveInstanceState"); + public void onSaveInstanceState( Bundle outState ) { + if ( mMapView != null ) { + mMapView.onSaveInstanceState( outState ); + Logger.d( TAG, "map onSaveInstanceState" ); } } @Override public void onLowMemory() { - Logger.d(TAG, "map onLowMemory"); + Logger.d( TAG, "map onLowMemory" ); } /** * 地图marker点击 */ @Override - public boolean onMarkerClick(Marker marker) { - return mMarkerClickHandler.handleMarkerClicked(marker); + public boolean onMarkerClick( Marker marker ) { + return mMarkerClickHandler.handleMarkerClicked( marker ); } /** @@ -240,32 +242,32 @@ public class AMapNaviViewWrapper implements IMogoMapView, * 地图点击回调 */ @Override - public void onTouch(MotionEvent motionEvent) { - MogoMapListenerHandler.getInstance().onTouch(motionEvent); + public void onTouch( MotionEvent motionEvent ) { + MogoMapListenerHandler.getInstance().onTouch( motionEvent ); } /** * POI 点击 */ @Override - public void onPOIClick(Poi poi) { - if (InterceptorHandler.getInstance().ignorePoiClicked(getContext())) { + public void onPOIClick( Poi poi ) { + if ( InterceptorHandler.getInstance().ignorePoiClicked( getContext() ) ) { return; } - MogoMapListenerHandler.getInstance().onPOIClick(ObjectUtils.fromAMap(poi)); + MogoMapListenerHandler.getInstance().onPOIClick( ObjectUtils.fromAMap( poi ) ); } @Override - public void onMapClick(LatLng latLng) { - if (InterceptorHandler.getInstance().ignoreMapClicked(getContext())) { + public void onMapClick( LatLng latLng ) { + if ( InterceptorHandler.getInstance().ignoreMapClicked( getContext() ) ) { return; } - MogoMapListenerHandler.getInstance().onMapClick(ObjectUtils.fromAMap(latLng)); + MogoMapListenerHandler.getInstance().onMapClick( ObjectUtils.fromAMap( latLng ) ); } @Override - public void onPolylineClick(Polyline polyline) { - NaviClient.getInstance(getContext()).handleClickedPolyline(polyline); + public void onPolylineClick( Polyline polyline ) { + NaviClient.getInstance( getContext() ).handleClickedPolyline( polyline ); } @Override @@ -287,8 +289,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, * @param mode 0:车头朝上状态;1:正北朝上模式 */ @Override - public void onNaviMapMode(int mode) { - Logger.i(TAG, "mode=" + mode); + public void onNaviMapMode( int mode ) { + Logger.i( TAG, "mode=" + mode ); } @Override @@ -307,8 +309,9 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void onLockMap(boolean isLock) { - MogoMapListenerHandler.getInstance().onLockMap(isLock); + public void onLockMap( boolean isLock ) { + Logger.d( TAG, "lock status = %s", isLock ); + MogoMapListenerHandler.getInstance().onLockMap( isLock ); } @Override @@ -317,138 +320,152 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void onMapTypeChanged(int type) { - if (type == 4) { - MogoMapListenerHandler.getInstance().onMapModeChanged(EnumMapUI.Type_Light); - } else if (type == 3) { - MogoMapListenerHandler.getInstance().onMapModeChanged(EnumMapUI.Type_Night); + public void onMapTypeChanged( int type ) { + if ( type == 4 ) { + MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Light ); + } else if ( type == 3 ) { + MogoMapListenerHandler.getInstance().onMapModeChanged( EnumMapUI.Type_Night ); } } @Override - public void onNaviViewShowMode(int i) { + public void onNaviViewShowMode( int i ) { - } - - @Override - public void setTrafficEnabled(boolean visible) { - if (checkAMapView()) { - mMapView.setTrafficLine(visible); + long delay = mMapView.getViewOptions().getLockMapDelayed(); + switch ( i ) { + case AMapNaviViewShowMode.SHOW_MODE_DEFAULT: + Logger.d( TAG, "普通模式" ); + break; + case AMapNaviViewShowMode.SHOW_MODE_DISPLAY_OVERVIEW: + Logger.d( TAG, "全览模式" ); + break; + case AMapNaviViewShowMode.SHOW_MODE_LOCK_CAR: + Logger.d( TAG, "锁车模式: %s", delay ); + break; } } @Override - public void changeZoom(boolean zoom) { - if (checkAMapView()) { - if (zoom) { + public void setTrafficEnabled( boolean visible ) { + if ( checkAMapView() ) { + mMapView.setTrafficLine( visible ); + } + } + + @Override + public void changeZoom( boolean zoom ) { + if ( checkAMapView() ) { + if ( zoom ) { mMapView.zoomIn(); } else { mMapView.zoomOut(); } - Logger.i(TAG, "mapview zoom = " + mMapView.getMap().getCameraPosition().zoom); - Logger.i(TAG, "scalePerPixel = " + getMap().getScalePerPixel()); + Logger.i( TAG, "mapview zoom = " + mMapView.getMap().getCameraPosition().zoom ); + Logger.i( TAG, "scalePerPixel = " + getMap().getScalePerPixel() ); } } @Override - public void changeZoom(float zoom) { + public void changeZoom( float zoom ) { Logger.d( TAG, "changeZoom %s", zoom ); - getMap().changeZoom(zoom); + mockTouchEvent(); + getMap().changeZoom( zoom ); } @Override - public void changeMapMode(EnumMapUI ui) { - if (ui == null) { + public void changeMapMode( EnumMapUI ui ) { + if ( ui == null ) { return; } - if (checkAMapView()) { + if ( checkAMapView() ) { AMapNaviViewOptions options = mMapView.getViewOptions(); - if (options == null) { + if ( options == null ) { options = new AMapNaviViewOptions(); } - switch (ui) { + switch ( ui ) { case CarUp_2D: - options.setTilt(0); - mMapView.setNaviMode(AMapNaviView.CAR_UP_MODE); + options.setTilt( 0 ); + mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); break; case CarUp_3D: - options.setTilt(60); - mMapView.setNaviMode(AMapNaviView.CAR_UP_MODE); + options.setTilt( 60 ); + mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE ); break; case NorthUP_2D: - options.setTilt(0); - mMapView.setNaviMode(AMapNaviView.NORTH_UP_MODE); + options.setTilt( 0 ); + mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE ); break; case Type_Light: - options.setNaviNight(false); + options.setNaviNight( false ); break; case Type_Night: - options.setNaviNight(true); + options.setNaviNight( true ); break; case Type_AUTO_LIGHT_Night: - options.setNaviNight(false); - options.setAutoNaviViewNightMode(true); + options.setNaviNight( false ); + options.setAutoNaviViewNightMode( true ); break; } - mMapView.setViewOptions(options); + mMapView.setViewOptions( options ); } } private boolean checkAMapView() { - if (mMapView == null) { - Logger.e(TAG, "高德mapView实例为空,请检查"); + if ( mMapView == null ) { + Logger.e( TAG, "高德mapView实例为空,请检查" ); return false; } return true; } @Override - public void moveToCenter(MogoLatLng latLng) { + public void moveToCenter( MogoLatLng latLng ) { Logger.d( TAG, "move to center %s", latLng ); - if (latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d) { - Logger.e(TAG, "latlng = null or is illegal"); + if ( latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d ) { + Logger.e( TAG, "latlng = null or is illegal" ); return; } + mockTouchEvent(); mMapView.getMap() - .moveCamera(CameraUpdateFactory.newLatLng(new LatLng(latLng.lat, latLng.lng))); + .moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); } @Override - public void showMyLocation(boolean visible) { - if (checkAMapView()) { + public void showMyLocation( boolean visible ) { + if ( checkAMapView() ) { MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); - style.showMyLocation(visible); - mMapView.getMap().setMyLocationStyle(style); + style.showMyLocation( visible ); + mMapView.getMap().setMyLocationStyle( style ); } } public void initMyLocation() { - if (checkAMapView()) { - mMapView.getMap().setMyLocationEnabled(true); + if ( checkAMapView() ) { + mMapView.getMap().setMyLocationEnabled( true ); MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); - style.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); - style.interval(1000); - style.anchor(0.5F,0.5F); - style.strokeColor(Color.TRANSPARENT); - style.strokeWidth(0); + style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER ); + style.interval( 1000 ); + style.anchor( 0.5F, 0.5F ); + style.strokeColor( Color.TRANSPARENT ); + style.strokeWidth( 0 ); style.radiusFillColor( Color.TRANSPARENT ); style.myLocationIcon( - BitmapDescriptorFactory.fromResource(R.drawable.map_api_ic_current_location2)); - mMapView.getMap().setMyLocationStyle(style); + BitmapDescriptorFactory.fromResource( R.drawable.map_api_ic_current_location2 ) ); + mMapView.getMap().setMyLocationStyle( style ); } } @Override public void recoverLockMode() { - if (checkAMapView()) { + if ( checkAMapView() ) { mMapView.recoverLockMode(); } } @Override public void displayOverview() { - if (checkAMapView()) { - if (NaviClient.getInstance(getContext()).isNaviing()) { + if ( checkAMapView() ) { + if ( NaviClient.getInstance( getContext() ).isNaviing() ) { mMapView.displayOverview(); } } @@ -466,37 +483,37 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void onNaviStarted() { - if (checkAMapView()) { - mMapView.setCarOverlayVisible(true); + if ( checkAMapView() ) { + mMapView.setCarOverlayVisible( true ); showMyLocation( false ); } } @Override public void onNaviStopped() { - if (checkAMapView()) { - mMapView.setCarOverlayVisible(false); - showMyLocation(true); - NaviClient.getInstance(getContext()).startAimlessMode(AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED); + if ( checkAMapView() ) { + mMapView.setCarOverlayVisible( false ); + showMyLocation( true ); + NaviClient.getInstance( getContext() ).startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); } } @Override - public void onNaviInfoUpdat(NaviInfo naviInfo) { + public void onNaviInfoUpdat( NaviInfo naviInfo ) { } @Override - public void onCameraChange(CameraPosition cameraPosition) { + public void onCameraChange( CameraPosition cameraPosition ) { } @Override - public void onCameraChangeFinish(CameraPosition cameraPosition) { - if (cameraPosition != null) { + public void onCameraChangeFinish( CameraPosition cameraPosition ) { + if ( cameraPosition != null ) { MogoMapListenerHandler.getInstance() - .onMapChanged(ObjectUtils.fromAMap(cameraPosition.target), cameraPosition.zoom, - cameraPosition.tilt, cameraPosition.bearing); + .onMapChanged( ObjectUtils.fromAMap( cameraPosition.target ), cameraPosition.zoom, + cameraPosition.tilt, cameraPosition.bearing ); } } @@ -504,8 +521,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, public MogoLatLng getCameraNorthEastPosition() { try { return ObjectUtils.fromAMap( - mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.northeast); - } catch (Exception e) { + mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.northeast ); + } catch ( Exception e ) { } return null; @@ -515,8 +532,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, public MogoLatLng getCameraSouthWestPosition() { try { return ObjectUtils.fromAMap( - mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.southwest); - } catch (Exception e) { + mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.southwest ); + } catch ( Exception e ) { } return null; @@ -525,30 +542,30 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public MogoLatLng getWindowCenterLocation() { try { - return ObjectUtils.fromAMap(mMapView.getMap().getCameraPosition().target); - } catch (Exception e) { + return ObjectUtils.fromAMap( mMapView.getMap().getCameraPosition().target ); + } catch ( Exception e ) { } return null; } @Override - public void setPointToCenter(double mapCenterX, double mapCenterY) { - if (checkAMapView()) { + public void setPointToCenter( double mapCenterX, double mapCenterY ) { + if ( checkAMapView() ) { AMapNaviViewOptions options = mMapView.getViewOptions(); - options.setPointToCenter(mapCenterX, mapCenterY); - mMapView.setViewOptions(options); + options.setPointToCenter( mapCenterX, mapCenterY ); + mMapView.setViewOptions( options ); } } @Override - public Point getLocationPointInScreen(MogoLatLng latLng) { - if (checkAMapView()) { + public Point getLocationPointInScreen( MogoLatLng latLng ) { + if ( checkAMapView() ) { try { return mMapView.getMap() - .getProjection() - .toScreenLocation(ObjectUtils.fromMogo2(latLng)); - } catch (Exception e) { + .getProjection() + .toScreenLocation( ObjectUtils.fromMogo2( latLng ) ); + } catch ( Exception e ) { return null; } } @@ -556,12 +573,12 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public MogoLatLng getLocationMogoLatLngInScreen(Point point) { - if (checkAMapView()) { + public MogoLatLng getLocationMogoLatLngInScreen( Point point ) { + if ( checkAMapView() ) { try { return ObjectUtils.fromAMap( - mMapView.getMap().getProjection().fromScreenLocation(point)); - } catch (Exception e) { + mMapView.getMap().getProjection().fromScreenLocation( point ) ); + } catch ( Exception e ) { return null; } } @@ -569,28 +586,41 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void startJumpAnimation(IMogoMarker marker, float high, Interpolator interpolator, - long duration) { - if (marker == null || high <= 0.0f || interpolator == null || duration < 0) { + public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, + long duration ) { + if ( marker == null || high <= 0.0f || interpolator == null || duration < 0 ) { return; } try { - final LatLng latLng = ObjectUtils.fromMogo2(marker.getPosition()); - Point point = mMapView.getMap().getProjection().toScreenLocation(latLng); - point.y -= WindowUtils.dip2px(getContext(), high); - LatLng target = mMapView.getMap().getProjection().fromScreenLocation(point); + final LatLng latLng = ObjectUtils.fromMogo2( marker.getPosition() ); + Point point = mMapView.getMap().getProjection().toScreenLocation( latLng ); + point.y -= WindowUtils.dip2px( getContext(), high ); + LatLng target = mMapView.getMap().getProjection().fromScreenLocation( point ); //使用TranslateAnimation,填写一个需要移动的目标点 - Animation animation = new TranslateAnimation(target); - animation.setInterpolator(interpolator); + Animation animation = new TranslateAnimation( target ); + animation.setInterpolator( interpolator ); //整个移动所需要的时间 - animation.setDuration(duration); + animation.setDuration( duration ); //设置动画 - if (marker instanceof AMapMarkerWrapper) { - ((AMapMarkerWrapper) marker).getMarker().setAnimation(animation); - ((AMapMarkerWrapper) marker).getMarker().startAnimation(); + if ( marker instanceof AMapMarkerWrapper ) { + ( ( AMapMarkerWrapper ) marker ).getMarker().setAnimation( animation ); + ( ( AMapMarkerWrapper ) marker ).getMarker().startAnimation(); } - } catch (Exception e) { - Logger.e(TAG, e, "error."); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); } } + + /** + * 模拟点击事件,达到锁车->普通事件 + */ + private void mockTouchEvent(){ + long downTime = SystemClock.uptimeMillis(); + long eventTime = SystemClock.uptimeMillis() + 100; + int metaState = 0; + MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 0, 0, metaState); + mMapView.dispatchTouchEvent(motionEvent); + MotionEvent upEvent = MotionEvent.obtain(downTime + 100, eventTime + 100, MotionEvent.ACTION_UP, 0,0, metaState); + mMapView.dispatchTouchEvent(upEvent); + } } From 6bc17d181b0d0d057875bbffe233998d71182fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 22:21:34 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86bug=20?= =?UTF-8?q?=E3=80=90=E5=9C=A8=E7=BA=BF=E8=BD=A6=E8=BE=86=E3=80=91=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E5=90=AF=E5=8A=A8=EF=BC=8C=E5=9C=A8=E7=BA=BF=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=8D=A1=E7=89=87=E9=83=BD=E4=BC=9A=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=B8=80=E8=BE=86=E8=BD=A6=E6=98=BE=E7=A4=BA=EF=BC=8C=E4=BD=86?= =?UTF-8?q?=E6=98=AF=E8=BF=99=E8=BE=86=E8=BD=A6=E6=A0=B9=E6=9C=AC=E4=B8=8D?= =?UTF-8?q?=E5=9C=A8=E5=91=A8=E8=BE=B9=EF=BC=8CACCON=E5=90=8E=E5=BA=94?= =?UTF-8?q?=E5=BD=93=E9=BB=98=E8=AE=A4=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=9F=90?= =?UTF-8?q?=E4=B8=80=E8=BD=A6=E8=BE=86=E7=9A=84=E5=9C=A8=E7=BA=BF=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=8D=A1=E7=89=87=EF=BC=8C=E6=88=96=E8=80=85=E9=80=89?= =?UTF-8?q?=E5=8F=96=E6=9C=80=E8=BF=91=E8=BD=A6=E8=BE=86=E7=9A=84=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E8=BD=A6=E8=BE=86=E5=8D=A1=E7=89=87=E4=B9=9F=E8=A1=8C?= =?UTF-8?q?=20http://jira.zhidaohulian.com/browse/UI-372=3Fjql=3Dproject%2?= =?UTF-8?q?0%3D%20UI%20AND%20assignee%20in%20(donghongyu)%20ORDER%20BY%20p?= =?UTF-8?q?riority%20DESC%2C%20updated%20DESC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/MarkerServiceHandler.java | 2 +- .../service/marker/MapMarkerManager.java | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index fca2cc564e..c5b640fc98 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -56,7 +56,7 @@ public class MarkerServiceHandler { mMarkerManager = mMapService.getMarkerManager(context); mNavi = mMapService.getNavi(context); mMapUIController = mMapService.getMapUIController(); - mLocationClient = mMapService.getLocationClient(context); + mLocationClient = mMapService.getSingletonLocationClient(context); mMapMarkerManager = MapMarkerManager.getInstance(context); mMapMarkerManager.init(context); 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 40d3d632c4..2dc8d3121c 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 @@ -15,6 +15,7 @@ import com.amap.api.maps.model.animation.Animation; import com.amap.api.maps.model.animation.ScaleAnimation; import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.marker.AMapMarkerWrapper; +import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; @@ -387,7 +388,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag noveltyInfoList = markerCardResult.getNoveltyInfo(); } if (onlineCarList != null) { - double nearlyDistance = Double.MAX_VALUE; + double nearlyDistance = Float.MAX_VALUE; for (MarkerOnlineCar markerOnlineCar : onlineCarList) { MarkerLocation markerLocation = markerOnlineCar.getLocation(); @@ -401,16 +402,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { - double calculateDistance = Utils.calculateLineDistance( - new MogoLatLng(markerLocation.getLat(), markerLocation.getLat()), - new MogoLatLng( - MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation().getLatitude(), - MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation().getLongitude() - ) + // 当前车辆的位置 + MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); + + // 计算车辆距离指定气泡的距离 + float calculateDistance = Utils.calculateLineDistance( + new MogoLatLng(markerLocation.getLat(), markerLocation.getLon()), + new MogoLatLng(currentLocation.getLatitude(), currentLocation.getLongitude()) ); +// Logger.d("点之间距离", +// "当前车辆经纬度:" + +// "\n\tlatitude=" + currentLocation.getLatitude() + +// "\n\tlongitude=" + currentLocation.getLongitude() + +// "\n气泡经纬度:" + markerLocation + +// "\n相距:" + calculateDistance + "米"); + // 进行比较,保留最近的一个数据 if (calculateDistance < nearlyDistance) { + nearlyDistance = calculateDistance; nearlyMogoMarker = iMogoMarker; } @@ -418,6 +428,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag e.printStackTrace(); } } + Logger.d("点之间距离", "距离当前车辆位置最近的距离为:" + nearlyDistance); fillNumberTrackEventBody(array, 3, onlineCarList.size()); } From 30edccf509ffc14dc174201902d9cc3185c688fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 23:30:44 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86bug=20?= =?UTF-8?q?=E3=80=90=E5=9C=A8=E7=BA=BF=E8=BD=A6=E8=BE=86=E3=80=91=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E5=90=AF=E5=8A=A8=EF=BC=8C=E5=9C=A8=E7=BA=BF=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=8D=A1=E7=89=87=E9=83=BD=E4=BC=9A=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=B8=80=E8=BE=86=E8=BD=A6=E6=98=BE=E7=A4=BA=EF=BC=8C=E4=BD=86?= =?UTF-8?q?=E6=98=AF=E8=BF=99=E8=BE=86=E8=BD=A6=E6=A0=B9=E6=9C=AC=E4=B8=8D?= =?UTF-8?q?=E5=9C=A8=E5=91=A8=E8=BE=B9=EF=BC=8CACCON=E5=90=8E=E5=BA=94?= =?UTF-8?q?=E5=BD=93=E9=BB=98=E8=AE=A4=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=9F=90?= =?UTF-8?q?=E4=B8=80=E8=BD=A6=E8=BE=86=E7=9A=84=E5=9C=A8=E7=BA=BF=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=8D=A1=E7=89=87=EF=BC=8C=E6=88=96=E8=80=85=E9=80=89?= =?UTF-8?q?=E5=8F=96=E6=9C=80=E8=BF=91=E8=BD=A6=E8=BE=86=E7=9A=84=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E8=BD=A6=E8=BE=86=E5=8D=A1=E7=89=87=E4=B9=9F=E8=A1=8C?= =?UTF-8?q?=20http://jira.zhidaohulian.com/browse/UI-372=3Fjql=3Dproject%2?= =?UTF-8?q?0%3D%20UI%20AND%20assignee%20in%20(donghongyu)%20ORDER%20BY%20p?= =?UTF-8?q?riority%20DESC%2C%20updated%20DESC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/marker/MapMarkerManager.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 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 2dc8d3121c..ea942b3c3f 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 @@ -20,7 +20,6 @@ import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; -import com.mogo.module.common.entity.MarkerCarChat; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; @@ -58,7 +57,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag private static final String TAG = "MapMarkerManager"; // 第一次请求到地图的Marker数据 private boolean isFirstMarker = true; - private boolean isOnLineCard = false; private static Context mContext; private static IMogoMarker lastMarker; private static MapMarkerManager mMarkerManager; @@ -100,17 +98,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag public void onSwitched(int position, String moduleName) { Logger.e(TAG, "======moduleName:" + moduleName); highlightedMarker(moduleName, false); - - if (moduleName.equals(ServiceConst.CARD_TYPE_USER_DATA)) { - isOnLineCard = true; - } else { - isOnLineCard = false; - } mLastHighLightModule = moduleName; } }); } + // ACC ON 的时候重置为true + public void setFirstMarker(boolean firstMarker) { + isFirstMarker = firstMarker; + } /** * 地图上的Marker点击回调 @@ -375,7 +371,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag } } - List carChatList = markerCardResult.getCarChat(); List onlineCarList = markerCardResult.getOnlineCar(); List exploreWayList = null; List shareMusicList = null; @@ -517,7 +512,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag try { // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker - if (isFirstMarker && isOnLineCard) { + if (isFirstMarker) { if (nearlyMogoMarker != null) { Logger.w(TAG, "ACC ON,或者语音搜索触发,默认选中最近的在线车辆nearlyMogoMarker:" + nearlyMogoMarker); onMarkerClicked(nearlyMogoMarker); From f72ce1e69c99095be6963fdfc7e47b6f28b6e331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 23:54:21 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/MarkerShowEntity.java | 11 --- .../service/marker/MapMarkerManager.java | 89 +++++++------------ .../mogo/module/service/utils/ViewUtils.java | 37 ++++++++ 3 files changed, 68 insertions(+), 69 deletions(-) create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/utils/ViewUtils.java diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java index 067330a211..f8a7e293cb 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java @@ -15,8 +15,6 @@ public class MarkerShowEntity { // false - 没选中,true - 选中 private boolean isChecked; - // false - 非高亮,true - 高亮 - private boolean isHighlighted; // icon 地址,例如:头像,唱片图片,探路缩略,可能为空展示默认图 private String iconUrl; // 要展示的文本 @@ -36,14 +34,6 @@ public class MarkerShowEntity { isChecked = checked; } - public boolean isHighlighted() { - return isHighlighted; - } - - public void setHighlighted(boolean highlighted) { - isHighlighted = highlighted; - } - public String getIconUrl() { return iconUrl; } @@ -108,7 +98,6 @@ public class MarkerShowEntity { public String toString() { return "MarkerShowEntity{" + "isChecked=" + isChecked + - ", isHighlighted=" + isHighlighted + ", iconUrl='" + iconUrl + '\'' + ", textContent='" + textContent + '\'' + ", markerType='" + markerType + '\'' + 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 ea942b3c3f..055ae2a3f7 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 @@ -1,15 +1,11 @@ package com.mogo.module.service.marker; import android.content.Context; -import android.graphics.Bitmap; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; -import android.view.View; -import android.view.ViewGroup; import android.view.animation.BounceInterpolator; import android.view.animation.OvershootInterpolator; -import android.widget.TextView; import com.amap.api.maps.model.animation.Animation; import com.amap.api.maps.model.animation.ScaleAnimation; @@ -33,6 +29,7 @@ import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.Utils; import com.mogo.module.service.datamanager.MogoDataHandler; +import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.utils.logger.Logger; @@ -126,26 +123,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag return false; } // 将上次选中 Marker 设置为未选中状态 - MarkerShowEntity lastMarkerShowEntity = (MarkerShowEntity) lastMarker.getObject(); - Logger.i(TAG, "onMarkerClicked 点击了大而全中的Marker lastMarkerShowEntity:" + lastMarkerShowEntity); - if (lastMarkerShowEntity != null) { - lastMarkerShowEntity.setChecked(false); - lastMarkerShowEntity.setHighlighted(false); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, lastMarkerShowEntity, lastMarker.getMogoMarkerOptions()); - lastMarker.setIcon(fromView(markerView.getView())); - } + closeMarker(lastMarker); } // 将当前的Marker设置为选中 - MarkerShowEntity markerShowEntity = (MarkerShowEntity) marker.getObject(); - Logger.i(TAG, "onMarkerClicked 点击了大而全中的Marker markerShowEntity:" + markerShowEntity); - if (markerShowEntity != null) { - markerShowEntity.setChecked(true); - markerShowEntity.setHighlighted(true); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, marker.getMogoMarkerOptions()); - marker.setIcon(fromView(markerView.getView())); - } - + openMarker(marker); lastMarker = marker; // 数据统计代码 @@ -197,31 +179,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag } - private Bitmap fromView(View view) { - view.setDrawingCacheEnabled(true); - processChildView(view); - view.destroyDrawingCache(); - view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); - view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); - Bitmap bitmap = null; - return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null; - } - - - private void processChildView(View view) { - if (!(view instanceof ViewGroup)) { - if (view instanceof TextView) { - ((TextView) view).setHorizontallyScrolling(false); - } - - } else { - for (int var1 = 0; var1 < ((ViewGroup) view).getChildCount(); ++var1) { - processChildView(((ViewGroup) view).getChildAt(var1)); - } - - } - } - // 对指定类型高亮处理 public synchronized static void highlightedMarker(final String typeTag) { highlightedMarker(typeTag, false); @@ -331,22 +288,38 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag // 将上次选中 Marker 设置为未选中状态 if (marker != null) { Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker); - - // 将上次选中 Marker 设置为未选中状态 - MarkerShowEntity lastMarkerShowEntity = (MarkerShowEntity) marker.getObject(); - lastMarkerShowEntity.setChecked(false); - lastMarkerShowEntity.setHighlighted(false); - - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, lastMarkerShowEntity, marker.getMogoMarkerOptions()); - marker.setIcon(fromView(markerView.getView())); - + closeMarker(marker); lastMarker = null; } } - /** - * 绘制Marker - */ + // 展开气泡 + private void openMarker(IMogoMarker mogoMarker) { + if (mogoMarker != null) { + 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())); + } + } + } + + // 折叠气泡 + private void closeMarker(IMogoMarker mogoMarker) { + if (mogoMarker != null) { + 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())); + } + } + } + + // 绘制Marker public synchronized void drawMapMarker(MarkerResponse response) { lastMarker = null; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/utils/ViewUtils.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/utils/ViewUtils.java new file mode 100644 index 0000000000..315b1e7a79 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/utils/ViewUtils.java @@ -0,0 +1,37 @@ +package com.mogo.module.service.utils; + +import android.graphics.Bitmap; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020-02-2123:51 + * desc : + * version: 1.0 + */ +public class ViewUtils { + public static Bitmap fromView(View view) { + view.setDrawingCacheEnabled(true); + processChildView(view); + view.destroyDrawingCache(); + view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); + view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); + Bitmap bitmap = null; + return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null; + } + + public static void processChildView(View view) { + if (!(view instanceof ViewGroup)) { + if (view instanceof TextView) { + ((TextView) view).setHorizontallyScrolling(false); + } + } else { + for (int var1 = 0; var1 < ((ViewGroup) view).getChildCount(); ++var1) { + processChildView(((ViewGroup) view).getChildAt(var1)); + } + } + } +} From 9769db4b5941d4e80cce2d694b2e832320d8b76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 21 Feb 2020 23:55:30 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/common/entity/MarkerShowEntity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java index f8a7e293cb..067330a211 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java @@ -15,6 +15,8 @@ public class MarkerShowEntity { // false - 没选中,true - 选中 private boolean isChecked; + // false - 非高亮,true - 高亮 + private boolean isHighlighted; // icon 地址,例如:头像,唱片图片,探路缩略,可能为空展示默认图 private String iconUrl; // 要展示的文本 @@ -34,6 +36,14 @@ public class MarkerShowEntity { isChecked = checked; } + public boolean isHighlighted() { + return isHighlighted; + } + + public void setHighlighted(boolean highlighted) { + isHighlighted = highlighted; + } + public String getIconUrl() { return iconUrl; } @@ -98,6 +108,7 @@ public class MarkerShowEntity { public String toString() { return "MarkerShowEntity{" + "isChecked=" + isChecked + + ", isHighlighted=" + isHighlighted + ", iconUrl='" + iconUrl + '\'' + ", textContent='" + textContent + '\'' + ", markerType='" + markerType + '\'' + From 24c96545d468a115ff242d1a265491a58f8149a2 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Sat, 22 Feb 2020 11:21:04 +0800 Subject: [PATCH 16/19] opt --- .../java/com/mogo/module/main/cards/MogoModulesManager.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index d78ff9e0b8..dcb61092fb 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -595,10 +595,6 @@ public class MogoModulesManager implements MogoModulesHandler, } } } - - if ( iterator.hasNext() ) { - iterator.next().accOn(); - } } @Override From 0fee11cb5e71491b44bb33b3fddba39d9148b7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Sun, 23 Feb 2020 15:07:24 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=B1=95=E7=A4=BA=E9=80=BB=E8=BE=91=20?= =?UTF-8?q?=E5=9C=A8=E8=BE=85=E5=8A=A9=E9=A9=BE=E9=A9=B6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E6=8A=8A=E6=B4=BB=E8=B7=83=E8=BD=A6=E6=9C=BA?= =?UTF-8?q?=E7=9A=84=E6=89=93=E7=82=B9=E5=9C=A8=E6=B8=85=E9=99=A4=E6=8E=89?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E4=BD=BF=E7=94=A8=E6=A8=A1=E6=8B=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/marker/MapMarkerManager.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 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 055ae2a3f7..1e0629f6d2 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 @@ -339,22 +339,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag isFirstMarker = true; } else { // 清空所有地图上绘制的Marker - if (!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) { - MarkerServiceHandler.getMarkerManager().removeMarkers(); - } + MarkerServiceHandler.getMarkerManager().removeMarkers(); } List onlineCarList = markerCardResult.getOnlineCar(); - List exploreWayList = null; - List shareMusicList = null; - List noveltyInfoList = null; + List exploreWayList = markerCardResult.getExploreWay(); + List shareMusicList = markerCardResult.getShareMusic(); + List noveltyInfoList = markerCardResult.getNoveltyInfo(); - // V2X 场景下只保留在线车辆数据 - if (!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) { - exploreWayList = markerCardResult.getExploreWay(); - shareMusicList = markerCardResult.getShareMusic(); - noveltyInfoList = markerCardResult.getNoveltyInfo(); - } if (onlineCarList != null) { double nearlyDistance = Float.MAX_VALUE; for (MarkerOnlineCar markerOnlineCar : onlineCarList) { From e89e3d70d5e4ba13b0ef402b13a34f8256d188f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Sun, 23 Feb 2020 15:36:09 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=B1=95=E7=A4=BA=E9=80=BB=E8=BE=91=20?= =?UTF-8?q?=E5=9C=A8=E8=BE=85=E5=8A=A9=E9=A9=BE=E9=A9=B6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E6=8A=8A=E6=B4=BB=E8=B7=83=E8=BD=A6=E6=9C=BA?= =?UTF-8?q?=E7=9A=84=E6=89=93=E7=82=B9=E5=9C=A8=E6=B8=85=E9=99=A4=E6=8E=89?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E4=BD=BF=E7=94=A8=E6=A8=A1=E6=8B=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/module/service/MogoServiceProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index d50fa4c3f6..2c8182acb9 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -585,7 +585,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, try { if ( isTrue ) { // V2X_UI时,不在自动刷新打点策略 -// stopAutoRefreshStrategy(); + stopAutoRefreshStrategy(); // 清除所有的打点信息记录 MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear(); } else { From 8e719290661d21c8580908b537b44a68bcebb7b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Sun, 23 Feb 2020 20:54:17 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=B1=95=E7=A4=BA=E9=80=BB=E8=BE=91=20=20=20?= =?UTF-8?q?=20=E5=88=A0=E9=99=A4=E4=BA=86=E3=80=90=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E3=80=91=E5=9C=A8=E7=BA=BF=E8=BD=A6=E8=BE=86?= =?UTF-8?q?ACCON=E5=90=8E=EF=BC=8C=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=9C=AA=E9=80=89=E4=B8=AD=E5=9C=A8=E7=BA=BF=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20=20=20=20http://jira.zhidaohulian?= =?UTF-8?q?.com/browse/UI-383=3Fjql=3Dproject%20%3D%20UI%20AND%20resolutio?= =?UTF-8?q?n%20%3D%20Unresolved%20AND%20assignee%20in%20(donghongyu)%20ORD?= =?UTF-8?q?ER%20BY%20priority%20DESC%2C%20updated%20DESC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/marker/MapMarkerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1e0629f6d2..c831a7f9b8 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 @@ -53,7 +53,7 @@ import java.util.Map; public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessageListener { private static final String TAG = "MapMarkerManager"; // 第一次请求到地图的Marker数据 - private boolean isFirstMarker = true; + private boolean isFirstMarker = false; private static Context mContext; private static IMogoMarker lastMarker; private static MapMarkerManager mMarkerManager;