diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index 9b5319ec9b..f7055ae50b 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -14,7 +14,6 @@ import androidx.annotation.Nullable; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.CoordinateConverter; import com.amap.api.maps.TextureMapView; import com.amap.api.maps.UiSettings; import com.amap.api.maps.model.BitmapDescriptorFactory; @@ -26,7 +25,6 @@ import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Polyline; import com.amap.api.maps.model.PolylineOptions; -import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; @@ -265,6 +263,10 @@ public class BusPassengerMapDirectionView } } + public void clearCoordinatesLatLng(){ + mCoordinatesLatLng.clear(); + } + public void onCreateView(Bundle savedInstanceState) { if (mAMapNaviView != null) { mAMapNaviView.onCreate(savedInstanceState); @@ -296,26 +298,34 @@ public class BusPassengerMapDirectionView mCoordinatesLatLng.addAll(latLngs); } - public void setLinePointMarkerAndDraw(List routeLineLatLngs, int currentIndex) { - mLinePointsLatLng.clear(); + public void clearLineMarkers(){ + for (int i =0; i< mLineMarkers.size();i++){ + mLineMarkers.get(i).setVisible(false); + } mLineMarkers.clear(); - mLinePointsLatLng.addAll(routeLineLatLngs); - for (int i = 0; i < mLinePointsLatLng.size(); i++) { + } + + public void setLineMarkersAndDraw(List lineineLatLngs){ + clearLineMarkers(); + for (int i = 0; i < lineineLatLngs.size(); i++) { Marker mWayPointMarker = mAMap.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_way_point))); mLineMarkers.add(mWayPointMarker); } - if (mCoordinatesLatLng.size() == 0) { for (int i = 0; i < mLineMarkers.size(); i++) { - mLineMarkers.get(i).setPosition(mLinePointsLatLng.get(i)); + mLineMarkers.get(i).setPosition(lineineLatLngs.get(i)); mLineMarkers.get(i).setVisible(true); } mCurrentIndex = -1; - return; } + } - if (mCurrentIndex != currentIndex) { + public void setLinePointMarkerAndDraw(List routeLineLatLngs, int currentIndex) { + mLinePointsLatLng.clear(); + mLinePointsLatLng.addAll(routeLineLatLngs); + + if (mCoordinatesLatLng.size() > 0 && mCurrentIndex != currentIndex) { if (mAMap != null && mLineMarkers.size() > 0) { mCurrentIndex = currentIndex; for (int i = 0; i < mLineMarkers.size(); i++) { diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index dab37fe048..72668ea93d 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -42,7 +42,7 @@ public class BusPassengerRouteFragment extends private BusPassengerTrafficLightView mTrafficLightView; private List mStationsList = new ArrayList<>(); - private List mRoutePointsList = new ArrayList<>(); + private List mLinePointsList = new ArrayList<>(); private TextView mSpeedTv; private ConstraintLayout mNoLineInfoView; @@ -176,6 +176,18 @@ public class BusPassengerRouteFragment extends } } + public void setLineMarkers(List list) { + if (mMapDirectionView != null) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + mMapDirectionView.setLineMarkersAndDraw(list); + + } + }); + } + } + public void changeOperationStatus(boolean status) { if (status) { mNoLineInfoView.setVisibility(View.GONE); @@ -207,19 +219,34 @@ public class BusPassengerRouteFragment extends mStationsList.clear(); mStationsList.addAll(stations); mAdapter.notifyDataSetChanged(); + + if (currentStationIndex == 0 && isArrived){ //到达始发站且并未出发, 恢复站点marker 清楚路径 清空路径点 + clearPolyline(); + if (mMapDirectionView != null) mMapDirectionView.clearCoordinatesLatLng(); + } + if (stations.size() > 0){ updateWayPointList(stations,currentStationIndex); } } private void updateWayPointList(List stations,int currentStationIndex) { - mRoutePointsList.clear(); + mLinePointsList.clear(); for (int i = 0; i< stations.size(); i++) {//站点集合 LatLng latLng = BPCoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext() ,stations.get(i).getLon(),stations.get(i).getLat());// lat,lon - mRoutePointsList.add(latLng); + mLinePointsList.add(latLng); + } + setLineMarkers(mLinePointsList); + + if (mMapDirectionView != null) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + mMapDirectionView.setLinePointMarkerAndDraw(mLinePointsList,currentStationIndex); + } + }); } - mMapDirectionView.setLinePointMarkerAndDraw(mRoutePointsList,currentStationIndex); } @Override diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml index 31cab964c2..dc85f5d3b6 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml @@ -107,7 +107,7 @@ diff --git a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml index 558429d9ec..0c307b9d24 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml @@ -75,13 +75,16 @@ @@ -114,12 +117,15 @@