fix bug of environment of socket and update map version

This commit is contained in:
zhongchao
2021-06-28 17:13:38 +08:00
parent bbcfc07a4d
commit 91bd760750
3 changed files with 40 additions and 29 deletions

View File

@@ -31,7 +31,7 @@ public
*/
class AdasRecognizedResultDrawer extends BaseDrawer {
private static final String TAG = "AdasRecognizedResultDrawer";
private static final String TAG = "RecognizedResultDrawer";
private static volatile AdasRecognizedResultDrawer sInstance;
@@ -100,6 +100,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
String uniqueKey = recognizedListResult.uuid;
IMogoMarker marker = mMarkersCaches.remove(uniqueKey);
if (marker != null && !marker.isDestroyed()) {
Log.d(TAG, "发现缓存marker id : " + uniqueKey);
updateCacheMarkerRes(marker, recognizedListResult);
renderAdasOneFrame(true, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
} else {
@@ -112,50 +113,55 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
removeUselessLastRecord();
// 能复用的 marker 数量
int cachedMarkerSize = mMarkersCaches.size();
// int cachedMarkerSize = mMarkersCaches.size();
// 需要新增的 marker 数量
int newDiffSetSize = newDiffSet.size();
Log.d(TAG, "原数据量 " + resultList.size() + " 新增marker数量 " + newDiffSetSize);
// 能复用的数量
int size = Math.min(cachedMarkerSize, newDiffSetSize);
// int size = Math.min(cachedMarkerSize, newDiffSetSize);
// 复用过期 marker
if (newDiffSetSize > 0) {
Iterator<Map.Entry<String, IMogoMarker>> entryIterator = mMarkersCaches.entrySet().iterator();
for (int i = 0; i < size; i++) {
ADASRecognizedResult recognizedListResult = newDiffSet.get(i);
String uniqueKey = recognizedListResult.uuid;
Map.Entry<String, IMogoMarker> entry = entryIterator.next();
entryIterator.remove();
ADASRecognizedResult old = mLastPositions.remove(entry.getKey());
IMogoMarker marker = entry.getValue();
if (marker == null) {
Log.d("EmArrow", "存在复用marker为空数据");
continue;
}
// 复用更新marker 3D资源
if (old == null || old.type != recognizedListResult.type) {
updateCacheMarkerRes(marker, recognizedListResult);
}
renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
// Iterator<Map.Entry<String, IMogoMarker>> entryIterator = mMarkersCaches.entrySet().iterator();
// for (int i = 0; i < size; i++) {
// ADASRecognizedResult recognizedListResult = newDiffSet.get(i);
// String uniqueKey = recognizedListResult.uuid;
// Map.Entry<String, IMogoMarker> entry = entryIterator.next();
// entryIterator.remove();
// ADASRecognizedResult old = mLastPositions.remove(entry.getKey());
// IMogoMarker marker = entry.getValue();
// if (marker == null) {
// continue;
// }
// // 复用更新marker 3D资源
// if (old == null || old.type != recognizedListResult.type) {
// updateCacheMarkerRes(marker, recognizedListResult);
// }
// Log.d(TAG,"复用marker id : " + uniqueKey);
// renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
// }
// 复用过后还需新增的 marker
for (int i = size; i < newDiffSetSize; i++) {
// for (int i = size; i < newDiffSetSize; i++) {
for (int i = 0; i < newDiffSetSize; i++) {
ADASRecognizedResult recognizedListResult = newDiffSet.get(i);
String uniqueKey = recognizedListResult.uuid;
IMogoMarker marker = drawAdasRecognizedDataMarker(recognizedListResult);
if (marker == null) {
continue;
}
Log.d(TAG, "新增marker id : " + uniqueKey);
renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
}
if (cachedMarkerSize - size > 0) {
sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches);
}
// if (cachedMarkerSize - size > 0) {
// sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches);
// }
sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches);
mMarkersCaches.clear();
mMarkersCaches = newAdasRecognizedMarkersCaches;
Log.d(TAG, "更新缓存marker, size : " + mMarkersCaches.size());
}
/**
@@ -273,8 +279,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
Map<String, IMogoMarker> newAdasRecognizedMarkersCaches) {
final long start = System.currentTimeMillis();
Log.d("EmArrow", "renderAdasOneFrame uuid : " + uniqueKey + " type : " + recognizedListResult.type);
Log.d("EmArrow", "renderAdasOneFrame Process.myPid : " + android.os.Process.myPid());
Log.d(TAG, "renderAdasOneFrame uuid : " + uniqueKey + " type : " + recognizedListResult.type);
ADASRecognizedResult lastPosition = mLastPositions.remove(uniqueKey);
// double lastLon = -1;
// double lastLat = -1;
@@ -290,6 +295,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
mLastPositions.put(uniqueKey, recognizedListResult);
if (useCache) {
Log.d(TAG, "使用缓存 id : " + uniqueKey);
long interval = computeAnimDuration(lastPosition.systemTime, recognizedListResult.systemTime, lastPosition.satelliteTime, recognizedListResult.satelliteTime);
final MogoLatLng renderLoc = new MogoLatLng(recognizedListResult.lat, recognizedListResult.lon);
@@ -297,6 +303,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
final long intervalRef = interval - cost;
marker.addDynamicAnchorPosition(renderLoc, (float) recognizedListResult.heading, intervalRef);
} else {
Log.d(TAG, "未使用缓存 id : " + uniqueKey);
marker.setRotateAngle(((float) recognizedListResult.heading));
marker.setPosition(recognizedListResult.lat, recognizedListResult.lon);
}