This commit is contained in:
zhongchao
2021-05-18 10:28:32 +08:00
parent a397ef82f4
commit 485a95561a
7 changed files with 42 additions and 32 deletions

View File

@@ -84,13 +84,16 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
for (ADASRecognizedResult recognizedListResult : resultList) {
if (isUselessValue(recognizedListResult)) {
Logger.d(TAG, "存在uuid为空数据");
continue;
}
// 复用之前存在的 marker
String uniqueKey = recognizedListResult.uuid;
IMogoMarker marker = mMarkersCaches.remove(uniqueKey);
// 对之前的marker 更新资源 todo 后面涉及到此类变化的数据均改动
int resId = getModelRes(recognizedListResult.type);
String resIdVal = resId + "";
marker.use3DResource(resIdVal);
if (marker != null && !marker.isDestroyed()) {
renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
} else {
@@ -119,34 +122,33 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
String uniqueKey = recognizedListResult.uuid;
Map.Entry<String, IMogoMarker> entry = entryIterator.next();
entryIterator.remove();
Logger.d(TAG, "复用 : remove markerCache , key : " + entry.getKey());
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) {
String resIdVal = null;
int resId = getModelRes(recognizedListResult.type);
resIdVal = resId + "";
String resName = mMarkerCachesResMd5Values.get(resIdVal);
if (!TextUtils.isEmpty(resName)) {
if (!TextUtils.equals(resName, marker.getMarkerResName())) {
marker.use3DResource(resName);
}
} else {
resName = marker.use3DResource(resId);
mMarkerCachesResMd5Values.put(resIdVal, resName);
}
}
// if (old == null || old.type != recognizedListResult.type) {
// int resId = getModelRes(recognizedListResult.type);
// String resName = mMarkerCachesResMd5Values.get(resIdVal);
// if (!TextUtils.isEmpty(resName)) {
// if (!TextUtils.equals(resName, marker.getMarkerResName())) {
// marker.use3DResource(resName);
// }
// } else {
// resName = marker.use3DResource(resId);
// mMarkerCachesResMd5Values.put(resIdVal, resName);
// }
// }
int resId = getModelRes(recognizedListResult.type);
String resIdVal = resId + "";
marker.use3DResource(resIdVal);
renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
// 复用过后还需新增的 marker
for (int i = size; i < newDiffSetSize; i++) {
ADASRecognizedResult recognizedListResult = newDiffSet.get(i);
String uniqueKey = recognizedListResult.uuid;
@@ -211,7 +213,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 uuid : " + uniqueKey + " type : " + recognizedListResult.type);
ADASRecognizedResult lastPosition = mLastPositions.remove(uniqueKey); //todo 缓存数据太多
double lastLon = -1;
double lastLat = -1;
@@ -247,7 +249,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
marker.setAnchorColor(carColor);
if (shouldShowSpeed(recognizedListResult.type)) {
showSelfSpeed(mContext, marker, recognizedListResult.speed, recognizedListResult.uuid, MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
showSelfSpeed(marker, recognizedListResult.speed, recognizedListResult.uuid, recognizedListResult.type, MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
}
}
@@ -262,9 +264,8 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
return null;
}
String resIdVal = null;
int resId = getModelRes(recognizedListResult.type);
resIdVal = resId + "";
String resIdVal = resId + "";
String carColor = recognizedListResult.color;
if (TextUtils.isEmpty(carColor)) {
@@ -277,12 +278,13 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
.gps(true)
.anchorColor(carColor)
.controlAngle(true)
.resName(mMarkerCachesResMd5Values.get(resIdVal))
// .resName(mMarkerCachesResMd5Values.get(resIdVal))
.resName(resIdVal)
.icon3DRes(resId)
.rotate((float) recognizedListResult.heading)
.position(new MogoLatLng(recognizedListResult.lat, recognizedListResult.lon));
IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(DataTypes.TYPE_MARKER_ADAS, options);
cacheMarkerIconResMd5Val(resIdVal, marker);
// cacheMarkerIconResMd5Val(resIdVal, marker);
return marker;
}

View File

@@ -293,12 +293,11 @@ class BaseDrawer {
/**
* 展示车辆速度
*
* @param context 上下文
* @param mogoMarker {@link IMogoMarker}
* @param speed 是否显示速度
* @param isVrMode 是否是vrMode
*/
public void showSelfSpeed(Context context, IMogoMarker mogoMarker, double speed, String uuid, boolean isVrMode) {
public void showSelfSpeed(IMogoMarker mogoMarker, double speed, String uuid, int type, boolean isVrMode) {
Log.d("EmArrow", "showSelf uuid : " + uuid + " speed : " + speed);
if (mogoMarker == null || mogoMarker.isDestroyed()) {
return;
@@ -313,7 +312,7 @@ class BaseDrawer {
return;
}
mogoMarker.setInfoWindowOffset(0, 20);
String text = speedIntVal + "\n" + uuid;
String text = speedIntVal + "\n" + uuid + "\n" + type;
mSpeedView.setText(text);
mogoMarker.updateInfoWindowView(mSpeedView);
}

View File

@@ -292,7 +292,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
marker.setAnchorColor(getModelRenderColor(cloudRoadData.getType(), cloudRoadData.getSpeed(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading()));
if (shouldShowSpeed(cloudRoadData.getType())) {
showSelfSpeed(mContext, marker, cloudRoadData.getSpeed(), cloudRoadData.getUuid(), MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
showSelfSpeed(marker, cloudRoadData.getSpeed(), cloudRoadData.getUuid(),cloudRoadData.getType(), MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
}
}