From bef5a7b52771ed7c92040277085bfe30d2501fe2 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Sat, 14 Mar 2020 15:16:24 +0800 Subject: [PATCH] opt --- .../service/marker/MapMarkerManager.java | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 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 d93f347338..07353d8002 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 @@ -130,19 +130,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mIsMarkerClicked = true; Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker ); try { - if ( mLastCheckMarker != null ) { - // 判断点击的是否是同一个 - if ( marker.equals( mLastCheckMarker ) ) { - Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker ); - return false; - } - // 将上次选中 Marker 设置为未选中状态 - closeMarker( mLastCheckMarker ); + boolean result = switchMarkerOpenStatus( marker ); + if ( !result ) { + return false; } - // 将当前的Marker设置为选中 - openMarker( marker ); - // 数据统计代码 final Map< String, Object > properties = new HashMap<>(); switch ( mLastCheckMarker.getOwner() ) { @@ -191,6 +183,28 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return false; } + /** + * 切换当前选中marker和上一个选中的状态 + * + * @param marker + * @return + */ + private boolean switchMarkerOpenStatus( IMogoMarker marker ) { + if ( mLastCheckMarker != null ) { + // 判断点击的是否是同一个 + if ( marker.equals( mLastCheckMarker ) ) { + Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker ); + return false; + } + // 将上次选中 Marker 设置为未选中状态 + closeMarker( mLastCheckMarker ); + } + + // 将当前的Marker设置为选中 + openMarker( marker ); + return true; + } + // 对指定类型高亮处理 public synchronized void highlightedMarker( final String typeTag ) { @@ -772,23 +786,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener, @Override public void onBizActionDone( String biz, int position, Object data ) { Logger.d( TAG, "biz = %s, position = %s", biz, position ); - if ( !( data instanceof MarkerShowEntity ) ) { - return; - } - if ( ( ( MarkerShowEntity ) data ).getMarker() != null ) { - onMarkerClicked( ( ( MarkerShowEntity ) data ).getMarker() ); + if ( data instanceof MarkerShowEntity && + ( ( MarkerShowEntity ) data ).getMarker() != null ) { + switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() ); } else { IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); List< IMogoMarker > markers = markerManager.getMarkers( biz ); if ( markers != null ) { - for ( IMogoMarker marker : markers ) { - if ( !( marker.getObject() instanceof MarkerShowEntity ) ) { - continue; - } - if ( ( ( MarkerShowEntity ) marker.getObject() ).getBindObj() == data ) { - onMarkerClicked( marker ); - break; - } + IMogoMarker marker = markers.get( position ); + if ( marker != null ) { + switchMarkerOpenStatus( marker ); } } }