From 076e0abaf38c0e13243ae8417be1778fa12ea225 Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Tue, 21 Apr 2020 15:53:29 +0800 Subject: [PATCH 1/6] online car smooth move --- .../impl/amap/marker/AMapMarkerWrapper.java | 7 +- .../java/com/mogo/map/marker/IMogoMarker.java | 2 - .../service/marker/MapMarkerManager.java | 101 ++++++------------ 3 files changed, 37 insertions(+), 73 deletions(-) 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(); From 0d09dc2b7c115800e7a09dc31a8d89d3caaa99d2 Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Tue, 21 Apr 2020 19:11:51 +0800 Subject: [PATCH 2/6] online car smooth move (modify) --- .../java/com/mogo/module/common/entity/MarkerCarPois.java | 8 +++++--- .../com/mogo/module/service/marker/MapMarkerManager.java | 5 ++--- 2 files changed, 7 insertions(+), 6 deletions(-) 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 6786ee9c88..8113d7e110 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 @@ -826,7 +826,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { @Override public void onSuccess(Object o) { - Logger.i(TAG, "在线车辆" + o.toString()); MarkerResponse data = (MarkerResponse) o; MarkerCardResult result = data.getResult(); @@ -856,8 +855,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, 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]; + 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())); From 6f972498455084300f0bf9f5dbd3f1c0997bf415 Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Tue, 21 Apr 2020 19:33:18 +0800 Subject: [PATCH 3/6] onlinecar smooth --- .../java/com/mogo/module/service/marker/MapMarkerManager.java | 4 ---- 1 file changed, 4 deletions(-) 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 8113d7e110..daa39c6b6e 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 @@ -804,10 +804,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } public void getOnlineCarData(MogoLatLng latlng) { - for (int i = 0; i < carMarkers.size(); i++) { - IMogoMarker marker = carMarkers.get(i); - marker.destroy(); - } mCarLatLng = latlng; getOnlineCarList(); UiThreadHandler.removeCallbacks(runnable); From da24f93cadb708f7e70345b341600891ecf8839c Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Wed, 22 Apr 2020 11:12:10 +0800 Subject: [PATCH 4/6] onlinecar smooth --- .../com/mogo/module/service/marker/MapMarkerManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 daa39c6b6e..96699a1ab8 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 @@ -828,10 +828,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if (result == null) { return; } - for (int i = 0; i < carMarkers.size(); i++) { - IMogoMarker marker = carMarkers.get(i); - marker.destroy(); - } +// 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); } From 0e5b45f3095fd8a0fba1c556dc92f03721c0385d Mon Sep 17 00:00:00 2001 From: ihoudf <188816190@qq.com> Date: Wed, 22 Apr 2020 12:56:57 +0800 Subject: [PATCH 5/6] onlinecar smooth data --- .../com/mogo/module/service/marker/MapMarkerManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 96699a1ab8..daa39c6b6e 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 @@ -828,10 +828,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if (result == null) { return; } -// for (int i = 0; i < carMarkers.size(); i++) { -// IMogoMarker marker = carMarkers.get(i); -// marker.destroy(); -// } + 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); } From 4da47b14c2a5b9f5795528119ff61cf3d81b5ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 22 Apr 2020 14:21:29 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=96=B0=E9=B2=9C=E4=BA=8B=E5=84=BF?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=86=85=E5=AE=B9=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/marker/MapMarkerManager.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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 daa39c6b6e..4be6ad2223 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 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); @@ -486,7 +486,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); - startSmooth(iMogoMarker,markerOnlineCar,markerLocation); + startSmooth(iMogoMarker, markerOnlineCar, markerLocation); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { @@ -599,7 +599,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); } }