Skip to content

Commit 76ce290

Browse files
committed
fix(Android):fix gps mock show interaction
1 parent b2efdf2 commit 76ce290

File tree

3 files changed

+72
-61
lines changed

3 files changed

+72
-61
lines changed

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/gpsmock/GpsMockFragment.java

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -391,24 +391,31 @@ private void initData() {
391391
}
392392

393393
private void drawRoute() {
394-
if (GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
395-
mBdMapView.setOnMarkerClickListener(mDrivingRouteOverlay);
396-
mDrivingRouteOverlay.setBdMapRouteData(GpsMockManager.getInstance().getBdMockDrivingRouteLine());
397-
mDrivingRouteOverlay.addToMap();
398-
mDrivingRouteOverlay.zoomToSpan();
394+
if (checkRouteMockToggle()) {
395+
if (GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
396+
mBdMapView.setOnMarkerClickListener(mDrivingRouteOverlay);
397+
mDrivingRouteOverlay.setBdMapRouteData(GpsMockManager.getInstance().getBdMockDrivingRouteLine());
398+
mDrivingRouteOverlay.addToMap();
399+
mDrivingRouteOverlay.zoomToSpan();
399400

400-
mTvOriginDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getTotalDistance()));
401-
}
401+
mTvOriginDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getTotalDistance()));
402+
}
402403

403-
if (checkDriftToggle() && GpsMockManager.getInstance().isMockingRoute() && GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
404-
if (mCurDriftTypeIndex == DriftType.DRIFT_TYPE_ROUTE.ordinal()) {
405-
mDrivingRouteOverlay.addDriftRouteToMap(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftPoints(), OverlayManager.COLOR_ROUTE_DRIFT);
406-
mTvMockDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftDistance()));
404+
if (checkDriftToggle()) {
405+
if (GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
406+
if (mCurDriftTypeIndex == DriftType.DRIFT_TYPE_ROUTE.ordinal()) {
407+
mDrivingRouteOverlay.addDriftRouteToMap(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftPoints(), OverlayManager.COLOR_ROUTE_DRIFT);
408+
mTvMockDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftDistance()));
409+
} else {
410+
mDrivingRouteOverlay.addDriftRandomRouteToMap(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftPoints(), OverlayManager.COLOR_ROUTE_DRIFT);
411+
mTvMockDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftDistance()));
412+
}
413+
}
407414
} else {
408-
mDrivingRouteOverlay.addDriftRandomRouteToMap(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftPoints(), OverlayManager.COLOR_ROUTE_DRIFT);
409-
mTvMockDistance.setText(String.valueOf(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftDistance()));
415+
mDrivingRouteOverlay.removeDriftRouteFromMap();
410416
}
411-
417+
} else {
418+
mDrivingRouteOverlay.removeAllRouteFromMap();
412419
}
413420
}
414421

@@ -585,6 +592,7 @@ private void onRouteMockCbChange(boolean isChecked) {
585592

586593
saveMockToggle();
587594
GpsMockConfig.putRouteMockOpen(isChecked);
595+
drawRoute();
588596
}
589597

590598
/**
@@ -606,8 +614,15 @@ private boolean checkDriftToggle() {
606614
}
607615

608616
private void onRouteDriftMockCbChange(boolean isChecked) {
617+
if (!isChecked && GpsMockManager.getInstance().isMockingRoute()) {
618+
mCbToggleRouteDriftMock.setChecked(true);
619+
ToastUtils.showShort("轨迹模拟正在进行, 请先取消");
620+
return;
621+
}
622+
609623
showDriftLayout(isChecked);
610624
GpsMockConfig.putRouteDriftMockOpen(isChecked);
625+
drawRoute();
611626
}
612627

613628
private float getInputSpeed() {

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/widget/DrivingRouteOverlay.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.didichuxing.doraemonkit.gps_mock.widget;
22

3-
import android.util.Log;
4-
53
import com.baidu.mapapi.map.BaiduMap;
64
import com.baidu.mapapi.map.BitmapDescriptor;
75
import com.baidu.mapapi.map.BitmapDescriptorFactory;
@@ -327,7 +325,7 @@ public boolean onRouteNodeClick(int i) {
327325

328326
@Override
329327
public final boolean onMarkerClick(Marker marker) {
330-
for (Overlay mMarker : mOverlayList) {
328+
for (Overlay mMarker : mOriginRouteOverlayList) {
331329
if (mMarker instanceof Marker && mMarker.equals(marker)) {
332330
if (marker.getExtraInfo() != null) {
333331
onRouteNodeClick(marker.getExtraInfo().getInt("index"));
@@ -340,7 +338,7 @@ public final boolean onMarkerClick(Marker marker) {
340338
@Override
341339
public boolean onPolylineClick(Polyline polyline) {
342340
boolean flag = false;
343-
for (Overlay mPolyline : mOverlayList) {
341+
for (Overlay mPolyline : mOriginRouteOverlayList) {
344342
if (mPolyline instanceof Polyline && mPolyline.equals(polyline)) {
345343
// 选中
346344
flag = true;
@@ -353,7 +351,7 @@ public boolean onPolylineClick(Polyline polyline) {
353351

354352
public void setFocus(boolean flag) {
355353
focus = flag;
356-
for (Overlay mPolyline : mOverlayList) {
354+
for (Overlay mPolyline : mOriginRouteOverlayList) {
357355
if (mPolyline instanceof Polyline) {
358356
// 选中
359357
((Polyline) mPolyline).setFocus(flag);

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/widget/OverlayManager.java

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public abstract class OverlayManager implements OnMarkerClickListener, OnPolylin
4747
BaiduMap mBaiduMap = null;
4848
private List<OverlayOptions> mOverlayOptionList = null;
4949

50-
List<Overlay> mOverlayList = null;
50+
List<Overlay> mOriginRouteOverlayList = null;
5151

5252
// 漂移路线
5353
private Overlay mDriftRouteOverlay;
@@ -72,8 +72,8 @@ public OverlayManager(BaiduMap baiduMap) {
7272
if (mOverlayOptionList == null) {
7373
mOverlayOptionList = new ArrayList<OverlayOptions>();
7474
}
75-
if (mOverlayList == null) {
76-
mOverlayList = new ArrayList<Overlay>();
75+
if (mOriginRouteOverlayList == null) {
76+
mOriginRouteOverlayList = new ArrayList<Overlay>();
7777
}
7878
}
7979

@@ -94,14 +94,14 @@ public final void addToMap() {
9494
return;
9595
}
9696

97-
removeFromMap();
97+
removeOriginRouteFromMap();
9898
List<OverlayOptions> overlayOptions = getOverlayOptions();
9999
if (overlayOptions != null) {
100100
mOverlayOptionList.addAll(overlayOptions);
101101
}
102102

103103
for (OverlayOptions option : mOverlayOptionList) {
104-
mOverlayList.add(mBaiduMap.addOverlay(option));
104+
mOriginRouteOverlayList.add(mBaiduMap.addOverlay(option));
105105
}
106106
}
107107

@@ -113,20 +113,7 @@ public final void addDriftRouteToMap(List<LatLng> points, int lineColor) {
113113
return;
114114
}
115115

116-
if (mDriftRandomOverlay != null) {
117-
mDriftRandomOverlay.remove();
118-
}
119-
120-
if (mDriftRouteOverlay != null) {
121-
mDriftRouteOverlay.remove();
122-
}
123-
124-
if (mDriftRandomDotOverlay.size() > 0) {
125-
for (Overlay overlay : mDriftRandomDotOverlay) {
126-
overlay.remove();
127-
}
128-
}
129-
116+
removeDriftRouteFromMap();
130117
OverlayOptions driftOverlayOption = getPolylineOptions(points, lineColor);
131118
mDriftRouteOverlay = mBaiduMap.addOverlay(driftOverlayOption);
132119
}
@@ -139,16 +126,8 @@ public final void addDriftRandomDotToMap(List<LatLng> points, int color) {
139126
if (mBaiduMap == null) {
140127
return;
141128
}
142-
if (mDriftRouteOverlay != null) {
143-
mDriftRouteOverlay.remove();
144-
}
145-
146-
if (mDriftRandomDotOverlay.size() > 0) {
147-
for (Overlay overlay : mDriftRandomDotOverlay) {
148-
overlay.remove();
149-
}
150-
}
151129

130+
removeDriftRouteFromMap();
152131
for (LatLng latLng : points) {
153132
mDriftRandomDotOverlay.add(addPointMark(latLng, 8, color));
154133
}
@@ -160,14 +139,8 @@ public final void addDriftRandomRouteToMap(List<LatLng> points, int lineColor) {
160139
if (mBaiduMap == null) {
161140
return;
162141
}
163-
if (mDriftRouteOverlay != null) {
164-
mDriftRouteOverlay.remove();
165-
}
166-
167-
if (mDriftRandomOverlay != null) {
168-
mDriftRandomOverlay.remove();
169-
}
170142

143+
removeDriftRouteFromMap();
171144
OverlayOptions driftOverlayOption = getPolylineOptions(points, lineColor);
172145
mDriftRandomOverlay = mBaiduMap.addOverlay(driftOverlayOption);
173146
}
@@ -227,18 +200,43 @@ public final Overlay addPointMark(LatLng latLng, int radiusPx, int color) {
227200
.color(color));
228201
}
229202

203+
public final void removeAllRouteFromMap(){
204+
removeOriginRouteFromMap();
205+
removeDriftRouteFromMap();
206+
}
207+
208+
public final void removeDriftRouteFromMap(){
209+
if (mBaiduMap == null) {
210+
return;
211+
}
212+
213+
if (mDriftRandomOverlay != null) {
214+
mDriftRandomOverlay.remove();
215+
}
216+
217+
if (mDriftRouteOverlay != null) {
218+
mDriftRouteOverlay.remove();
219+
}
220+
221+
if (mDriftRandomDotOverlay.size() > 0) {
222+
for (Overlay overlay : mDriftRandomDotOverlay) {
223+
overlay.remove();
224+
}
225+
}
226+
}
227+
230228
/**
231229
* 将所有Overlay 从 地图上消除
232230
*/
233-
public final void removeFromMap() {
231+
public final void removeOriginRouteFromMap() {
234232
if (mBaiduMap == null) {
235233
return;
236234
}
237-
for (Overlay marker : mOverlayList) {
235+
for (Overlay marker : mOriginRouteOverlayList) {
238236
marker.remove();
239237
}
240238
mOverlayOptionList.clear();
241-
mOverlayList.clear();
239+
mOriginRouteOverlayList.clear();
242240

243241
}
244242

@@ -252,9 +250,9 @@ public void zoomToSpan() {
252250
if (mBaiduMap == null) {
253251
return;
254252
}
255-
if (mOverlayList.size() > 0) {
253+
if (mOriginRouteOverlayList.size() > 0) {
256254
LatLngBounds.Builder builder = new LatLngBounds.Builder();
257-
for (Overlay overlay : mOverlayList) {
255+
for (Overlay overlay : mOriginRouteOverlayList) {
258256
// polyline 中的点可能太多,只按marker 缩放
259257
if (overlay instanceof Marker) {
260258
builder.include(((Marker) overlay).getPosition());
@@ -278,9 +276,9 @@ public void zoomToSpanPaddingBounds(int paddingLeft, int paddingTop, int padding
278276
if (mBaiduMap == null) {
279277
return;
280278
}
281-
if (mOverlayList.size() > 0) {
279+
if (mOriginRouteOverlayList.size() > 0) {
282280
LatLngBounds.Builder builder = new LatLngBounds.Builder();
283-
for (Overlay overlay : mOverlayList) {
281+
for (Overlay overlay : mOriginRouteOverlayList) {
284282
// polyline 中的点可能太多,只按marker 缩放
285283
if (overlay instanceof Marker) {
286284
builder.include(((Marker) overlay).getPosition());

0 commit comments

Comments
 (0)