diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java index 669c4552a6..efdd5da1f2 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java @@ -84,6 +84,9 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { mMarker.setObject( null ); mMarker = null; } + if (mMovingPointOverlay != null){ + mMovingPointOverlay = null; + } mMogoInfoWindowAdapter = null; mMogoMarkerClickListener = null; mObject = null; @@ -365,8 +368,4 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { } } - @Override - public void stopSmooth() { - - } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java index 1ab2213a19..f48e10b104 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java @@ -261,6 +261,4 @@ public interface IMogoMarker { * @param duration 时长 */ void startSmooth(List points, int duration); - - void stopSmooth(); } 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 1194162f1c..6786ee9c88 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 @@ -417,7 +417,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; } -// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); List exploreWayList = markerCardResult.getExploreWay(); List shareMusicList = markerCardResult.getShareMusic(); List noveltyInfoList = markerCardResult.getNoveltyInfo(); @@ -431,7 +431,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, break; case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); @@ -453,7 +453,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, List shareMusicList = markerCardResult.getShareMusic(); List noveltyInfoList = markerCardResult.getNoveltyInfo(); -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); + drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL); drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_ALL); drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL); @@ -470,11 +470,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } - for (int i = 0; i < carMarkers.size(); i++) { - IMogoMarker marker = carMarkers.get(i); - marker.destroy(); - } - double nearlyDistance = Float.MAX_VALUE; int size = getAppropriateSize(maxAmount, onlineCarList); for (int i = 0; i < size; i++) { @@ -491,25 +486,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); - - carMarkers.add(iMogoMarker); - List poisList = markerOnlineCar.getPois(); - if (poisList.size() > 0){ - List points = new ArrayList<>(); - - if (poisList.size() == 1){ - points.add(new MogoLatLng(markerLocation.getLat(),markerLocation.getLon())); - } - for (int j = 0; j < poisList.size(); j++) { - MarkerCarPois pois = poisList.get(j); - double lat = pois.getCoordinates()[1]; - double lng = pois.getCoordinates()[0]; - points.add(new MogoLatLng(lat,lng)); - - } - iMogoMarker.startSmooth(points,mCarSmoothDuration); - } - + startSmooth(iMogoMarker,markerOnlineCar,markerLocation); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { @@ -827,12 +804,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } public void getOnlineCarData(MogoLatLng latlng) { -// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){ + for (int i = 0; i < carMarkers.size(); i++) { + IMogoMarker marker = carMarkers.get(i); + marker.destroy(); + } mCarLatLng = latlng; getOnlineCarList(); UiThreadHandler.removeCallbacks(runnable); UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000); -// } } private Runnable runnable = new Runnable() { @@ -843,52 +822,23 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } }; - private double lat = 39.969161; - private double lng = 116.412334; - private int a = 0; - private void getOnlineCarList() { mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { @Override public void onSuccess(Object o) { - Logger.i(TAG, "11111111211" + o.toString()); + Logger.i(TAG, "在线车辆" + o.toString()); -// MarkerResponse data = (MarkerResponse)o; -// MarkerCardResult result = data.getResult(); -// if (result == null) { -// return; -// } -// -// List onlineCarList = result.getOnlineCar(); -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); - - a++; - if (a == 3){ + MarkerResponse data = (MarkerResponse) o; + MarkerCardResult result = data.getResult(); + if (result == null) { return; } - - MarkerLocation location = new MarkerLocation(); - location.setLat(lat); - location.setLon(lng); - - - lng += 0.003; - double[] coor2 = {lng,lat}; - MarkerCarPois pois2 = new MarkerCarPois(); - pois2.setCoordinates(coor2); - - List pois = new ArrayList<>(); - pois.add(pois2); - MarkerOnlineCar onlineCar = new MarkerOnlineCar(); - onlineCar.setLocation(location); - onlineCar.setType(ServiceConst.CARD_TYPE_USER_DATA); - onlineCar.setPois(pois); - - List onlineCarList = new ArrayList<>(); - onlineCarList.add(onlineCar); - + for (int i = 0; i < carMarkers.size(); i++) { + IMogoMarker marker = carMarkers.get(i); + marker.destroy(); + } + List onlineCarList = result.getOnlineCar(); drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); - } @Override @@ -898,6 +848,23 @@ public class MapMarkerManager implements IMogoMarkerClickListener, }); } + private void startSmooth(IMogoMarker iMogoMarker, MarkerOnlineCar markerOnlineCar, + MarkerLocation markerLocation) { + carMarkers.add(iMogoMarker); + List poisList = markerOnlineCar.getPois(); + if (poisList.size() > 0) { + List points = new ArrayList<>(); + for (int j = 0; j < poisList.size(); j++) { + MarkerCarPois pois = poisList.get(j); + double lat = pois.getCoordinates()[1]; + double lng = pois.getCoordinates()[0]; + points.add(new MogoLatLng(lat, lng)); + } + points.add(new MogoLatLng(markerLocation.getLat(), markerLocation.getLon())); + iMogoMarker.startSmooth(points, mCarSmoothDuration); + } + } + private boolean ignoreDrawRequest() { return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow();