remake code

This commit is contained in:
zhongchao
2021-05-18 19:37:30 +08:00
parent 485a95561a
commit e71fa7325d
3 changed files with 35 additions and 32 deletions

View File

@@ -31,4 +31,9 @@ mapAutoView.setOnMapViewVisualAngleChangeListener
8.5.25
修改远景下拖动地图偶现黑屏问题
关闭部分多余日志
关闭部分多余日志
8.5.26
更新顺义高精数据
优化渲染效率
修改切换后台黑屏问题

View File

@@ -95,7 +95,7 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
public IMogoMapView getMapView( Context context ) {
Log.d(TAG,"setDebugMode==true");
NavAutoApi.INSTANCE.init( context, MapParams.Companion.init()
.setDebugMode( false )
.setDebugMode( true )
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
.setZoom( 20 )

View File

@@ -12,7 +12,6 @@ import com.mogo.module.common.constants.DataTypes;
import com.mogo.module.common.utils.SimpleHandlerThreadPool;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.Iterator;
@@ -90,21 +89,17 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
// 复用之前存在的 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()) {
updateCacheMarkerRes(marker, recognizedListResult);
renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
} else {
// 新增添加进差集
newDiffSet.add(recognizedListResult);
}
}
Log.d("EmArrow", "复用 : cacheMarkerSize : " + mMarkersCaches.size());
removeUselessMarker();
removeUselessLastRecord();
Log.d("EmArrow", "复用 : removeUselessMarker cacheMarkerSize : " + mMarkersCaches.size());
// 能复用的 marker 数量
int cachedMarkerSize = mMarkersCaches.size();
@@ -113,7 +108,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
// 能复用的数量
int size = Math.min(cachedMarkerSize, newDiffSetSize);
Log.d("EmArrow", "复用 : cacheMarkerSize : " + cachedMarkerSize + " newDiffSetSize : " + newDiffSetSize + " minSize : " + size);
// 复用过期 marker
if (newDiffSetSize > 0) {
Iterator<Map.Entry<String, IMogoMarker>> entryIterator = mMarkersCaches.entrySet().iterator();
@@ -128,23 +122,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
Log.d("EmArrow", "存在复用marker为空数据");
continue;
}
// 复用更新marker 3D资源
// 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);
if (old == null || old.type != recognizedListResult.type) {
updateCacheMarkerRes(marker, recognizedListResult);
}
renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
@@ -159,13 +140,31 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
renderAdasOneFrame(marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
}
Log.d("EmArrow", "清除前 dirty Markers size : " + mMarkersCaches.size());
if (cachedMarkerSize - size > 0) {
sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches);
}
Log.d("EmArrow", "清除后 dirty Markers size : " + mMarkersCaches.size());
mMarkersCaches = newAdasRecognizedMarkersCaches;
Log.d("EmArrow", "复用 : 赋值 mMarkersCaches size : " + mMarkersCaches.size());
}
/**
* todo 后面涉及到此类变化的数据均改动
*
* @param marker
* @param recognizedListResult
*/
private void updateCacheMarkerRes(IMogoMarker marker, ADASRecognizedResult recognizedListResult) {
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);
}
}
private void removeUselessLastRecord() { // todo 最好重新设计一个数据结构用于多线程数据过期失效的场景参见redis数据过期
@@ -278,13 +277,12 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
.gps(true)
.anchorColor(carColor)
.controlAngle(true)
// .resName(mMarkerCachesResMd5Values.get(resIdVal))
.resName(resIdVal)
.resName(mMarkerCachesResMd5Values.get(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;
}