diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java index a6ecb368d8..5f6574b364 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java @@ -39,20 +39,16 @@ public class OCHTaxiOverlayManager { /** * 绘制最优路线 * - * @param polylinePoint 要绘制的经纬度度集合 + * @param routelist 要绘制的经纬度度集合 */ - public IMogoPolyline draw(MogoLocation carLocal, List polylinePoint) { - if (mMoGoPolyline != null) { - mMoGoPolyline.remove(); - mPolylinePointList.clear(); - mPolylineColors.clear(); - } - if (polylinePoint != null) { + public IMogoPolyline draw(MogoLocation carLocal, List routelist) { + clearMogoRouteOverlay(); + if (routelist != null) { // 将当前车辆位置放进去 mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude())); // 过滤后台推送的推荐路线集合 - for (MogoLatLng polyline : polylinePoint) { + for (MogoLatLng polyline : routelist) { //需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃 if (LocationUtils.isPointOnCarFront(carLocal, polyline)) { mPolylinePointList.add(polyline); @@ -69,4 +65,12 @@ public class OCHTaxiOverlayManager { return mMoGoPolyline; } + public void clearMogoRouteOverlay(){ + if (mMoGoPolyline != null) { + mMoGoPolyline.remove(); + mPolylinePointList.clear(); + mPolylineColors.clear(); + } + } + } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index d03c206237..fd4530d610 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -358,23 +358,22 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } private Location mLocation; - private MogoLocation mogoLocation; @Override public void onCarLocationChanged2( Location location ) { OCHTaxiUiController.getInstance().runOnUIThread( () -> { calculateTravelDistance( location ); } ); -// //坐标转换 -// MogoLocation loc = new MogoLocation(); -// loc.setTime(loc.getTime()); -// loc.setAccuracy(location.getAccuracy()); -// loc.setSpeed(location.getSpeed()); -// loc.setLongitude(location.getLongitude()); -// loc.setLatitude(location.getLatitude()); -// loc.setAltitude(location.getAltitude()); -// loc.setBearing(location.getBearing()); -// loc.setProvider(location.getProvider()); -// mogoLocation = loc; + //坐标转换 + MogoLocation loc = new MogoLocation(); + loc.setTime(loc.getTime()); + loc.setAccuracy(location.getAccuracy()); + loc.setSpeed(location.getSpeed()); + loc.setLongitude(location.getLongitude()); + loc.setLatitude(location.getLatitude()); + loc.setAltitude(location.getAltitude()); + loc.setBearing(location.getBearing()); + loc.setProvider(location.getProvider()); + drawRouteOverlay(loc); } /** @@ -478,24 +477,24 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i }); } private OCHTaxiOverlayManager ochTaxiOverlayManager; - + private List mRouteList; @Override public void routeResult(List routeList) { - if (routeList == null ) return; -// double distance = calculateTravelDistance(mogoLocation,routeList); -// if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { -// MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().decreaseTravelDistance( distance ); -// updateOrderBaseStatusInfo(); -// } -// Logger.d("lianglihui","routeResult 剩余导航距离:"+distance); -// if (routeList != null && routeList.size() >0){ -// Logger.d("lianglihui","routeResult:"+routeList.size()); -// //adas回调导航路径 绘制引导线 -// if ( ochTaxiOverlayManager == null){ -// ochTaxiOverlayManager = new OCHTaxiOverlayManager(this.getContext()); -// } -// ochTaxiOverlayManager.draw(mogoLocation,routeList); -// } + mRouteList = routeList; + } + + private void drawRouteOverlay(MogoLocation location){ + if (mRouteList == null && ochTaxiOverlayManager!= null){ + ochTaxiOverlayManager.clearMogoRouteOverlay(); + return; + } + if (mRouteList.size() >0){ + //adas回调导航路径 绘制引导线 + if ( ochTaxiOverlayManager == null){ + ochTaxiOverlayManager = new OCHTaxiOverlayManager(this.getContext()); + } + ochTaxiOverlayManager.draw(location,mRouteList); + } } public double calculateTravelDistance(MogoLocation carLocation,List routeList){ diff --git a/config.gradle b/config.gradle index 9eb10c7621..01759696d8 100644 --- a/config.gradle +++ b/config.gradle @@ -34,9 +34,9 @@ ext { androidxjunit : "androidx.test.ext:junit:1.1.2", androidxespressocore : "androidx.test.espresso:espresso-core:3.3.0", // 地图 - amapnavi3dmap : "com.amap.api:navi-3dmap:7.2.0_3dmap7.2.0", - amapsearch : "com.amap.api:search:7.1.0", - amaplocation : "com.amap.api:location:5.3.1", + amapnavi3dmap : "com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1", + amapsearch : "com.amap.api:search:7.9.0", + amaplocation : "com.amap.api:location:5.5.0", // json 转换 gson : "com.google.code.gson:gson:2.8.4", // 内存泄漏检测