From 9b47282f219520b0445bd2d2388612ee4c5d50af Mon Sep 17 00:00:00 2001 From: zhongchao Date: Sun, 27 Jun 2021 12:16:03 +0800 Subject: [PATCH] changed the cache to draw marker --- .../impl/custom/marker/AMapMarkerWrapper.java | 2 +- .../drawer/AdasRecognizedResultDrawer.java | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java index 376618d1a3..f8ac053168 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java @@ -568,7 +568,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { @Override public void addDynamicAnchorPosition( MogoLatLng latLng, float angle, long duration ) { try { - mMarker.addDynamicAnchorPostion( new LonLatPoint( latLng.lon, latLng.lat, angle ), System.currentTimeMillis(), ( int ) duration ); + mMarker.addDynamicAnchorPostion( new LonLatPoint( latLng.lon, latLng.lat, angle ), System.currentTimeMillis(), ( int ) duration ,true , true); } catch ( Exception e ) { e.printStackTrace(); } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index da7067cb29..ff3b63e9b8 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -96,13 +96,12 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if (isUselessValue(recognizedListResult)) { continue; } - // 复用之前存在的 marker String uniqueKey = recognizedListResult.uuid; IMogoMarker marker = mMarkersCaches.remove(uniqueKey); if (marker != null && !marker.isDestroyed()) { updateCacheMarkerRes(marker, recognizedListResult); - renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); + renderAdasOneFrame(true, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); } else { // 新增添加进差集 newDiffSet.add(recognizedListResult); @@ -137,7 +136,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if (old == null || old.type != recognizedListResult.type) { updateCacheMarkerRes(marker, recognizedListResult); } - renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); + renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); } // 复用过后还需新增的 marker @@ -148,7 +147,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if (marker == null) { continue; } - renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); + renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches); } } if (cachedMarkerSize - size > 0) { @@ -239,7 +238,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { while (iterator.hasNext()) { ADASRecognizedResult result = iterator.next(); long internal = result.satelliteTime - getCurSatelliteTime(); - if (internal > 1000) { + if (internal > 300) { iterator.remove(); } } @@ -268,7 +267,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { * @param recognizedListResult {@link ADASRecognizedResult} * @param newAdasRecognizedMarkersCaches 缓存集合 */ - private void renderAdasOneFrame(IMogoMarker marker, + private void renderAdasOneFrame(boolean useCache, IMogoMarker marker, String uniqueKey, ADASRecognizedResult recognizedListResult, Map newAdasRecognizedMarkersCaches) { @@ -287,11 +286,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer { // // recognizedListResult.lon = matchLonLat[0]; // recognizedListResult.lat = matchLonLat[1]; +// Log.d( "matchRoad", "cost = %s", System.currentTimeMillis() - start ); mLastPositions.put(uniqueKey, recognizedListResult); -// Log.d( "matchRoad", "cost = %s", System.currentTimeMillis() - start ); - newAdasRecognizedMarkersCaches.put(uniqueKey, marker); - if (lastPosition != null) { + if (useCache) { long interval = computeAnimDuration(lastPosition.systemTime, recognizedListResult.systemTime, lastPosition.satelliteTime, recognizedListResult.satelliteTime); final MogoLatLng renderLoc = new MogoLatLng(recognizedListResult.lat, recognizedListResult.lon); @@ -308,6 +306,8 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } marker.setAnchorColor(carColor); + newAdasRecognizedMarkersCaches.put(uniqueKey, marker); + if (shouldShowSpeed(recognizedListResult.type)) { showSelfSpeed(marker, recognizedListResult.speed, recognizedListResult.uuid, recognizedListResult.type, MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()); }