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-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java index 0a0c84c94c..30c997b77d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarPois.java @@ -1,19 +1,21 @@ package com.mogo.module.common.entity; +import java.util.List; + /** * Created by ihoudf on 2020-04-16. **/ public class MarkerCarPois { - private double[] coordinates; + private List coordinates; private double angle; // 车头角度 private String adcode; - public double[] getCoordinates() { + public List getCoordinates() { return coordinates; } - public void setCoordinates(double[] coordinates) { + public void setCoordinates(List coordinates) { this.coordinates = coordinates; } 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 7a9dfae316..8428c48b50 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 @@ -385,7 +385,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; } -// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List onlineCarList = markerCardResult.getOnlineCar(); List exploreWayList = markerCardResult.getExploreWay(); List shareMusicList = markerCardResult.getShareMusic(); List noveltyInfoList = markerCardResult.getNoveltyInfo(); @@ -399,7 +399,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); @@ -421,7 +421,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); @@ -438,11 +438,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++) { @@ -459,25 +454,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 { @@ -590,7 +567,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, markerShowEntity.setBindObj(noveltyInfo); markerShowEntity.setMarkerLocation(markerLocation); markerShowEntity.setMarkerType(noveltyInfo.getType()); - markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress()); + String address = noveltyInfo.getLocation().getAddress(); + if (!TextUtils.isEmpty(address)) { + markerShowEntity.setTextContent(address); + } else { + markerShowEntity.setTextContent(noveltyInfo.getContentData().getTitle()); + } drawMapMarker(markerShowEntity); } } @@ -802,12 +784,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } public void getOnlineCarData(MogoLatLng latlng) { -// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){ mCarLatLng = latlng; getOnlineCarList(); UiThreadHandler.removeCallbacks(runnable); UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000); -// } } private Runnable runnable = new Runnable() { @@ -818,52 +798,22 @@ 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()); -// 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 @@ -873,6 +823,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 = new Double(pois.getCoordinates().get(1).toString()); + double lng = new Double(pois.getCoordinates().get(0).toString()); + 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();