Merge branch 'qa_merge_shunyi_vr_map' into qa_1.1.9

# Conflicts:
#	services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java
This commit is contained in:
wangcongtao
2021-01-07 18:59:09 +08:00
22 changed files with 284 additions and 113 deletions

View File

@@ -2,6 +2,7 @@ package com.mogo.base.websocket;
import android.content.Context;
import android.os.SystemClock;
import android.util.Log;
import androidx.annotation.Keep;
@@ -183,7 +184,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
@Override
public void handleMessage(String message) {
Logger.d(TAG, "websocket received msg = " + message);
Logger.d(TAG, "websocket received msg = %s", message);
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
Logger.d(TAG, "websocket received msg type = " + msgType);
@@ -195,9 +196,11 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
while (iterator.hasNext()) {
IMogoOnWebSocketMessageListener listener = iterator.next();
if (listener != null) {
Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData());
Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = %s", webSocketData.getData());
Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target());
final long start = System.currentTimeMillis();
listener.onMsgReceived(receiveObj);
Logger.d("WebSocketManager-sdk-timer", "cost " + (System.currentTimeMillis() - start) + "ms");
}
}
}

View File

@@ -76,4 +76,44 @@ public class CoordinateUtils {
return var10000;
}
/**
* @param lon1
* @param lat1
* @param lon2
* @param lat2
* @return 两坐标的距离 单位M
*/
public static float calculateLineDistance( double lon1, double lat1, double lon2, double lat2 ) {
try {
double var2 = lon1;
double var4 = lat1;
double var6 = lon2;
double var8 = lat2;
var2 *= 0.01745329251994329D;
var4 *= 0.01745329251994329D;
var6 *= 0.01745329251994329D;
var8 *= 0.01745329251994329D;
double var10 = Math.sin( var2 );
double var12 = Math.sin( var4 );
double var14 = Math.cos( var2 );
double var16 = Math.cos( var4 );
double var18 = Math.sin( var6 );
double var20 = Math.sin( var8 );
double var22 = Math.cos( var6 );
double var24 = Math.cos( var8 );
double[] var28 = new double[3];
double[] var29 = new double[3];
var28[0] = var16 * var14;
var28[1] = var16 * var10;
var28[2] = var12;
var29[0] = var24 * var22;
var29[1] = var24 * var18;
var29[2] = var20;
return ( float ) ( Math.asin( Math.sqrt( ( var28[0] - var29[0] ) * ( var28[0] - var29[0] ) + ( var28[1] - var29[1] ) * ( var28[1] - var29[1] ) + ( var28[2] - var29[2] ) * ( var28[2] - var29[2] ) ) / 2.0D ) * 1.27420015798544E7D );
} catch ( Throwable var26 ) {
var26.printStackTrace();
return 0.0F;
}
}
}

View File

@@ -67,7 +67,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.7.7'
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.8.1'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1'
}

View File

@@ -384,6 +384,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void moveToCenter( MogoLatLng latLng, boolean animate ) {
if ( mCurrentUI == EnumMapUI.Type_VR ) {
return;
}
Logger.d( TAG, "move to center %s", latLng );
if ( latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d ) {
Logger.e( TAG, "latlng = null or is illegal" );
@@ -399,6 +402,11 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void showMyLocation( boolean visible ) {
Logger.d( TAG, "showMyLocation1 %s", visible );
if ( mCurrentUI == EnumMapUI.Type_VR ) {
return;
}
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
@@ -463,8 +471,8 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void loseLockMode() {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
if ( mCurrentUI == EnumMapUI.Type_VR ) {
return;
}
Logger.d( TAG, "解锁锁车" );
mMapView.getMapAutoViewHelper().setLockMode( false );
@@ -519,6 +527,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {
if ( mCurrentUI == EnumMapUI.Type_VR ) {
return;
}
Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
mMapView.getMapAutoViewHelper().setPointToCenter( ( float ) mapCenterX, ( float ) mapCenterY );
}
@@ -596,9 +607,6 @@ public class AMapViewWrapper implements IMogoMapView,
}
Logger.i( TAG, "showBounds:%s -%s-%s- %b ", tag, carPosition.toString(), bound.toShortString(), lockCarPosition );
try {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
if ( !lockCarPosition ) {
loseLockMode();
@@ -642,6 +650,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void setCarCursorOption( CarCursorOption option ) {
if ( mCurrentUI == EnumMapUI.Type_VR ) {
return;
}
if ( mCarCursorOption != null && mCarCursorOption != DEFAULT_OPTION ) {
mCarCursorOption.destroy();
}

View File

@@ -100,12 +100,6 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
.setPointToCenter( 0.734375f, 0.5f )
.setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() );
MapAutoView mapAutoView = new MapAutoView(context);
Logger.w(TAG, "mapAutoView==" + mapAutoView);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
IMogoMapView mapView = new AMapViewWrapper(mapAutoView);
return mapView;
}

View File

@@ -61,7 +61,6 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
marker.setMObject( this );
MarkerWrapperClickHelper.getInstance().setMogoMarkerMap( marker.getId(), this );
}
marker.setSaveBitmapEnable( true );
setObject( mogoMarkerOptions.getObject() );
this.mMogoMarkerOptions = mogoMarkerOptions;
mMogoMarkerOptions.addObserver( this );
@@ -141,12 +140,12 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
if ( icons == null || icons.isEmpty() ) {
return;
}
ArrayList<BitmapDescriptor> descriptors = new ArrayList<>();
ArrayList< BitmapDescriptor > descriptors = new ArrayList<>();
for ( Bitmap icon : icons ) {
if ( icon == null || icon.isRecycled() ) {
continue;
}
descriptors.add( BitmapDescriptorFactory.INSTANCE.fromBitmap(icon));
descriptors.add( BitmapDescriptorFactory.INSTANCE.fromBitmap( icon ) );
}
if ( descriptors.isEmpty() ) {
return;
@@ -265,16 +264,16 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
@Override
public void setOnMarkerClickListener( IMogoMarkerClickListener listener ) {
mMogoMarkerClickListener = listener;
if ( mMarker != null ) {
mMarker.setOnMarkClickListener( new OnMarkClickListener() {
@Override
public void onMarkClick( @NotNull Marker marker ) {
if ( mMogoMarkerClickListener != null ) {
mMogoMarkerClickListener.onMarkerClicked( AMapMarkerWrapper.this );
}
}
} );
}
// if ( mMarker != null ) {
// mMarker.setOnMarkClickListener( new OnMarkClickListener() {
// @Override
// public void onMarkClick( @NotNull Marker marker ) {
// if ( mMogoMarkerClickListener != null ) {
// mMogoMarkerClickListener.onMarkerClicked( AMapMarkerWrapper.this );
// }
// }
// } );
// }
}
@Override
@@ -505,9 +504,14 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
@Override
public void use3DResource( int model3D ) {
try {
mMarker.setMarkerOptions( mMarker.getMarkeOptions().marker3DIcon( model3D ) );
mMarker.setMarkerOptions( mMarker.getMarkeOptions().anchorColor("#00FF00").marker3DIcon( model3D ) );
} catch ( Exception e ) {
Logger.e( TAG, e, "use3DResource" );
}
}
@Override
public void setAnchorColor( String anchorColor ) {
mMarker.setMarkerOptions( mMarker.getMarkeOptions().anchorColor( anchorColor ) );
}
}

View File

@@ -1,6 +1,7 @@
package com.mogo.map.impl.custom.utils;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.text.TextUtils;
import android.view.View;
@@ -89,6 +90,11 @@ public class ObjectUtils {
}
if (opt.getIcon3DRes() != 0) {
markerOptions.marker3DIcon(opt.getIcon3DRes());
try {
Color.parseColor(opt.getAnchorColor());
markerOptions.anchorColor( opt.getAnchorColor() );
} catch ( Exception e ) {
}
}
if (!TextUtils.isEmpty(opt.getTitle())) {
markerOptions.title(opt.getTitle());

View File

@@ -349,4 +349,12 @@ public interface IMogoMarker {
default void use3DResource( @RawRes int model3D ) {
}
/**
* 设置3D车模颜色
* @param anchorColor
*/
default void setAnchorColor(String anchorColor){
}
}

View File

@@ -75,6 +75,7 @@ public class MogoMarkerOptions extends Observable {
private @RawRes
int mIcon3DRes = 0;
private String mAnchorColor;
private boolean mIs3DMode = false;
@@ -233,6 +234,11 @@ public class MogoMarkerOptions extends Observable {
return this;
}
public MogoMarkerOptions anchorColor( String anchorColor ) {
this.mAnchorColor = anchorColor;
return this;
}
public double getLatitude() {
return latitude;
}
@@ -334,6 +340,10 @@ public class MogoMarkerOptions extends Observable {
return mIcon3DRes;
}
public String getAnchorColor() {
return mAnchorColor;
}
@Override
public String toString() {
return "MogoMarkerOptions{" +

View File

@@ -13,10 +13,8 @@ import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
import com.mogo.module.common.constants.AdasRecognizedType;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.service.adas.entity.ADASRecognizedListResult;
import com.mogo.utils.ViewUtils;
import java.util.ArrayList;
import java.util.HashMap;
@@ -68,8 +66,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
// adas marker 缓存
private Map< String, IMogoMarker > mAdasRecognizedMarkersCaches = new ConcurrentHashMap<>();
private boolean mIsVrMode = false;
public void renderAdasRecognizedResult( List< ADASRecognizedListResult > resultList, boolean machineVision, double curSpeed ) {
if ( resultList == null || resultList.isEmpty() ) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers( DataTypes.TYPE_MARKER_ADAS );
@@ -100,17 +96,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
continue;
}
mAdasRecognizedMarkersCaches.put( uniqueKey, marker );
} else {
if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode();
if ( mIsVrMode ) {
marker.getMogoMarkerOptions().set3DMode( true );
marker.use3DResource( getVrModel() );
} else {
marker.getMogoMarkerOptions().set3DMode( false );
marker.setIcon( ViewUtils.fromView( inflateView( recognizedListResult, machineVision, 0 ) ) );
}
}
}
MogoLatLng lastPosition = mLastPositions.get( uniqueKey );
@@ -124,8 +109,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
if ( latLon == null ) {
continue;
}
// double targetPos[] = transformGcj02ToFitMap( latLon.lat, latLon.lon );
// points.add( endLatLon = new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
points.add( endLatLon = new MogoLatLng( latLon.lat, latLon.lon ) );
}
@@ -137,8 +120,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
continue;
}
points.add( lastPosition );
// double targetPos[] = transformGcj02ToFitMap( latLon.lat, latLon.lon );
// points.add( endLatLon = new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
points.add( endLatLon = new MogoLatLng( latLon.lat, latLon.lon ) );
}
mLastPositions.put( uniqueKey, endLatLon );
@@ -193,22 +174,13 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
return null;
}
// double targetPos[] = transformGcj02ToFitMap( recognizedListResult.latLonList.get( 0 ).lat, recognizedListResult.latLonList.get( 0 ).lon );
MogoMarkerOptions options = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_ADAS )
.anchor( 0.5f, 0.5f )
.set3DMode( true )
.icon3DRes( getVrModel() )
.rotate( ( float ) recognizedListResult.heading )
// .position( new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
.position( new MogoLatLng( recognizedListResult.latLonList.get( 0 ).lat, recognizedListResult.latLonList.get( 0 ).lon ) );
if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
options.set3DMode( true );
options.icon3DRes( getVrModel() );
} else {
options.set3DMode( false );
options.icon( inflateView( recognizedListResult, machineVision, curSpeed ) );
}
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_ADAS, options );
}

View File

@@ -1,7 +1,6 @@
package com.mogo.module.common.drawer;
import android.content.Context;
import android.os.SystemClock;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,15 +8,20 @@ import android.widget.ImageView;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.uicontroller.MapCameraPosition;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
import com.mogo.module.common.api.CallChatApi;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.module.common.entity.CloudRoadData;
import com.mogo.module.common.entity.MogoSnapshotSetData;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.ViewUtils;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.ICarsChattingProvider;
@@ -36,16 +40,19 @@ public
*
* 云端数据绘制
*/
class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListener {
class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListener, IMogoStatusChangedListener {
private static final String TAG = "SnapshotSetDataDrawer";
private static volatile SnapshotSetDataDrawer sInstance;
private Context mContext;
private boolean mChangeCarModeStatus;
private SnapshotSetDataDrawer() {
mContext = AbsMogoApplication.getApp();
MogoApisHandler.getInstance().getApis()
.getStatusManagerApi().registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
}
public static SnapshotSetDataDrawer getInstance() {
@@ -71,12 +78,38 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
// 云端 marker 缓存
private Map< String, IMogoMarker > mCloudSnapshotMarkersCaches = new ConcurrentHashMap<>();
private Map< String, MogoLatLng > mLastPositions = new ConcurrentHashMap<>();
private Map< String, CloudRoadData > mLastPositions = new ConcurrentHashMap<>();
private boolean mIsVrMode = false;
private long mLastReceiveTime = 0L;
private long mAnimationDuration = 500L;
// private long mLastReceiveTime = 0L;
// private long mAnimationDuration = 500L;
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
Logger.d( TAG, "%s - %s", descriptor, isTrue );
mChangeCarModeStatus = true;
ThreadPoolService.execute( () -> {
clearOldStyleMarkers();
} );
}
private void clearOldStyleMarkers() {
try {
MogoApisHandler.getInstance().getApis()
.getMapServiceApi().getMarkerManager( mContext )
.removeMarkers( DataTypes.TYPE_MARKER_CLOUD_DATA );
mLastPositions.clear();
mCloudSnapshotMarkersCaches.clear();
} catch ( Exception e ) {
}
try {
MogoApisHandler.getInstance().getApis()
.getMapServiceApi().getMarkerManager( mContext )
.removeMarkers( DataTypes.TYPE_MARKER_ADAS );
} catch ( Exception e ) {
}
}
/**
* 其他车辆、rsu 车辆数据
@@ -85,22 +118,18 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
*/
public void renderSnapshotData( MogoSnapshotSetData data,
boolean machineVision ) {
if ( mLastReceiveTime != 0 ) {
mAnimationDuration = SystemClock.elapsedRealtime() - mLastReceiveTime;
} else {
mAnimationDuration = 500L;
recordTimeFlag();
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
mLastReceiveTime = SystemClock.elapsedRealtime();
if ( data == null || (
( data.getAllList() == null || data.getAllList().isEmpty() ) &&
( data.getNearList() == null || data.getNearList().isEmpty() ) ) ) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( AbsMogoApplication.getApp() ).removeMarkers( DataTypes.TYPE_MARKER_CLOUD_DATA );
return;
}
filterData( data.getAllList() );
List< CloudRoadData > allDatumsList = new ArrayList<>();
allDatumsList.addAll( data.getAllList() );
purgeCloudSnapshotData( allDatumsList );
prepareData( data.getAllList(), allDatumsList );
for ( CloudRoadData cloudRoadData : allDatumsList ) {
if ( cloudRoadData == null ) {
continue;
@@ -121,7 +150,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
if ( mCloudSnapshotMarkersCaches.containsKey( uniqueKey ) ) {
marker = mCloudSnapshotMarkersCaches.get( uniqueKey );
}
MogoLatLng target = new MogoLatLng( cloudRoadData.getLat(), cloudRoadData.getLon() );
if ( marker == null || marker.isDestroyed() ) {
marker = drawSnapshotDataMarker( cloudRoadData, machineVision, data.curSpeed );
if ( marker == null ) {
@@ -132,42 +160,81 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
mCloudSnapshotMarkersCaches.put( uniqueKey, marker );
} else {
if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
if ( mChangeCarModeStatus ) {
mChangeCarModeStatus = false;
mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode();
if ( mIsVrMode ) {
Logger.d( TAG, "3D模型" );
Logger.d( TAG, "3D模型-%s", uniqueKey );
marker.getMogoMarkerOptions().set3DMode( true );
marker.use3DResource( getVrModel( cloudRoadData ) );
} else {
Logger.d( TAG, "2D贴图" );
Logger.d( TAG, "2D贴图-%s", uniqueKey );
marker.getMogoMarkerOptions().set3DMode( false );
marker.setIcon( ViewUtils.fromView( inflateView( cloudRoadData, machineVision, 0 ) ) );
}
}
MogoLatLng lastPosition = mLastPositions.get( uniqueKey );
// double targetPos[] = transformGcj02ToFitMap( target.lat, target.lon );
// double lastPos[] = transformGcj02ToFitMap( lastPosition.lat, lastPosition.lon );
CloudRoadData lastPosition = mLastPositions.get( uniqueKey );
if ( lastPosition != null ) {
if ( lastPosition.equals( target ) ) {
if ( lastPosition.equals( cloudRoadData ) ) {
if ( ( ( int ) cloudRoadData.getSpeed() ) == 0 ) {
MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition();
if ( position != null ) {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() );
} else {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
}
}
Logger.d( TAG, "保持位置 - %s", uniqueKey );
marker.setPosition( lastPosition.lat, lastPosition.lon );
marker.setPosition( lastPosition.getLat(), lastPosition.getLon() );
} else {
List< MogoLatLng > points = new ArrayList<>();
points.add( new MogoLatLng( lastPosition.lat, lastPosition.lon ) );
points.add( new MogoLatLng( target.lat, target.lon ) );
marker.startSmoothInMs( points, mAnimationDuration );
Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, mAnimationDuration );
points.add( new MogoLatLng( lastPosition.getLat(), lastPosition.getLon() ) );
points.add( new MogoLatLng( cloudRoadData.getLat(), cloudRoadData.getLon() ) );
marker.startSmoothInMs( points, cloudRoadData.getSystemTime() - lastPosition.getSystemTime() );
Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, cloudRoadData.getSystemTime() - lastPosition.getSystemTime() );
}
} else {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
marker.setPosition( target.lat, target.lon );
MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition();
if ( position != null ) {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() );
} else {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
}
marker.setPosition( cloudRoadData.getLat(), cloudRoadData.getLon() );
}
}
mLastPositions.put( uniqueKey, target );
mLastPositions.put( uniqueKey, cloudRoadData );
}
}
/**
* 过滤数据
*
* @param in 输入集合
* @param out 输出集合
*/
private void prepareData( List< CloudRoadData > in, List< CloudRoadData > out ) {
filterData( in );
out.addAll( in );
purgeCloudSnapshotData( out );
}
/**
* 记录时间
*/
private void recordTimeFlag() {
// if ( mLastReceiveTime != 0 ) {
// mAnimationDuration = System.currentTimeMillis() - mLastReceiveTime;
// if ( mAnimationDuration > 1000L ) {
// mAnimationDuration = 500L;
// }
// } else {
// mAnimationDuration = 500L;
// }
// mLastReceiveTime = System.currentTimeMillis();
}
/**
* vr 模式下显示合并数据,否则只显示上报位置的车辆
*
@@ -245,21 +312,20 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
Logger.d( TAG, "draw marker uniqueKey = %s", data.getUniqueKey() );
// double coor[] = transformGcj02ToFitMap( data.getLat(), data.getLon() );
MogoMarkerOptions options = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_CLOUD_DATA )
.anchor( 0.5f, 0.5f )
.rotate( ( float ) data.getHeading() )
.object( data )
// .position( new MogoLatLng( coor[POS_LAT], coor[POS_LON] ) );
.position( new MogoLatLng( data.getLat(), data.getLon() ) );
if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
options.set3DMode( true );
Logger.d( TAG, "3D模型" );
options.anchorColor( "#00FF00" );
Logger.d( TAG, "3D模型 - %s", data.getUniqueKey() );
options.icon3DRes( getVrModel( data ) );
} else {
options.set3DMode( false );
Logger.d( TAG, "2D贴图" );
Logger.d( TAG, "2D贴图 - %s", data.getUniqueKey() );
options.icon( inflateView( data, machineVision, curSpeed ) );
}
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options );

View File

@@ -7,6 +7,7 @@ import com.mogo.map.marker.IMogoInfoWindowAdapter;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.utils.logger.Logger;
public
/**
@@ -17,6 +18,8 @@ public
*/
class RoadConditionInfoWindow3DAdapter implements IMogoInfoWindowAdapter {
private static final String TAG = "RoadConditionInfoWindow3DAdapter";
private MarkerShowEntity mEntity;
private Context mContext;
private MogoMarkerOptions mOptions;
@@ -31,6 +34,7 @@ class RoadConditionInfoWindow3DAdapter implements IMogoInfoWindowAdapter {
@Override
public View getInfoWindow( IMogoMarker marker ) {
Logger.d( TAG, "创建marker的infowindow" );
IMarkerView creator = MapMarkerAdapter.getMarkerInfoWindowView( mContext, mEntity, mOptions );
return creator.getView();
}

View File

@@ -3,6 +3,7 @@ package com.mogo.module.common.entity;
import android.os.Parcel;
import android.os.Parcelable;
import com.mogo.map.MogoLatLng;
import com.mogo.utils.CoordinateUtils;
import java.util.Objects;

View File

@@ -133,7 +133,7 @@ public class CloudRoadData implements Parcelable {
this.coordinates = coordinates;
}
public void setUuid(String uuid) {
public void setUuid( String uuid ) {
this.uuid = uuid;
}
@@ -222,4 +222,19 @@ public class CloudRoadData implements Parcelable {
return new CloudRoadData[size];
}
};
@Override
public boolean equals( Object o ) {
if ( this == o ) {
return true;
}
if ( o == null || getClass() != o.getClass() ) {
return false;
}
CloudRoadData that = ( CloudRoadData ) o;
return Double.compare( that.lat, lat ) == 0 &&
Double.compare( that.lon, lon ) == 0;
}
}

Binary file not shown.

View File

@@ -199,6 +199,16 @@ public class TopViewAnimHelper {
if (params == null) {
throw new IllegalArgumentException("method addTopView params LayoutParams is null");
}
if (isOuting) {
if (motionViewCache != null) {
motionViewCache.statusListener.beforeViewRemoveAnim(motionViewCache.view);
motionViewCache.statusListener.onViewRemoved(motionViewCache.view);
}
motionViewCache = new MotionViewCache(view, params, statusListener);
// return;
}
if (!viewCaches.contains(view)) {
// 判断此view是否已经增加到了顶部view如果增加过就不增加了
currentAnimatingView = view;
@@ -278,6 +288,9 @@ public class TopViewAnimHelper {
// 顶部view还没有内容需要整体下移
viewCaches.add(view);
topContainer.addView(view, params);
LayoutParams p = topContainer.getLayoutParams();
p.height = params.height;
topContainer.setLayoutParams(p);
Logger.d(TAG, "整体进入==== view.visibility: " + view.getVisibility() + " view" +
".position: (" + view.getX() + ", " + view.getY() + ") params.width: " + params.width + " params.height: " + params.height);
if (statusListenerMap.get(view) != null) {
@@ -333,6 +346,7 @@ public class TopViewAnimHelper {
}
Logger.d("TopViewAnimHelper", "startTopOutAnim=====");
if (!isTopViewOut && viewCaches.contains(view)) {
isOuting = true;
// 顶部view仅剩一个view需要整体上移
if (statusListenerMap.get(view) != null) {
statusListenerMap.get(view).beforeViewRemoveAnim(view);
@@ -341,7 +355,7 @@ public class TopViewAnimHelper {
NoMapTopViewShaderHelper.getInstance().hideShader();
topContainer.animate().translationY(-topContainer.getTranslationY()).setListener(mainAnimListener).start();
topContainer.animate().translationY(0).setListener(mainAnimListener).start();
checkCameraModePosition(false);
@@ -498,6 +512,11 @@ public class TopViewAnimHelper {
}
topContainer.removeAllViews();
currentAnimatingView = null;
isOuting = false;
// if (motionViewCache != null) {
// startTopInAnim(motionViewCache.view, motionViewCache.params, motionViewCache.statusListener);
// motionViewCache = null;
// }
} else {
listener = statusListenerMap.get(currentAnimatingView);
if (listener != null) {
@@ -518,4 +537,21 @@ public class TopViewAnimHelper {
}
};
private MotionViewCache motionViewCache = null;
private boolean isOuting = false;
private static class MotionViewCache {
private final View view;
private final LayoutParams params;
private final IMogoTopViewStatusListener statusListener;
public MotionViewCache(View view, LayoutParams params, IMogoTopViewStatusListener statusListener) {
this.view = view;
this.params = params;
this.statusListener = statusListener;
}
}
}

View File

@@ -158,12 +158,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
@Override
public void onMsgReceived( MogoSnapshotSetData data ) {
if ( data == null ) {
return;
}
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
// if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
//// return;
// }

View File

@@ -16,6 +16,7 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant;
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.common.utils.CloudPoiManager;
import com.mogo.module.share.bean.FixableButton;
@@ -192,13 +193,13 @@ public class ShareControl implements IMogoShareManager, Handler.Callback {
// if (!DebugConfig.isLauncher()) {
ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG,
StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
if (!isTrue) {
dismissShareDialog();
}
}
});
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
if (!isTrue) {
dismissShareDialog();
}
}
});
// }
// if (!DebugConfig.isLauncher()) {
@@ -299,6 +300,9 @@ public class ShareControl implements IMogoShareManager, Handler.Callback {
}
break;
case VOICE_CMD_PUB_TROUBLE_HELP:
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
return;
}
if (needAuth()) {
goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false);
} else {

View File

@@ -23,7 +23,7 @@ public class ShareConstants {
// 此处只记录了事故、实时路况、道路积水、道路结冰、浓雾,至于拥堵、交通检查和封路是在extention模块里面管理
public static final String VOICE_CMD_PUB_TROUBLE_HELP = "com.zhidao.auxiliaryDriving" +
".pubTroubleHelp";
".pubTroubleHelp";/*唤醒词 发起故障求助*/
public static final String VOICE_CMD_GO_TO_SHARE = "com.zhidao.share";
public static final String TAG = "/tanlu/ui";

View File

@@ -13,6 +13,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XObuEventEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
@@ -178,6 +179,10 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
@Override
public void onEventInfoCallback(MogoObuEventInfo info) {
Logger.d("V2X_OBU_EVENT", "carEventInfo==" + info);
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
Logger.d("V2X_OBU_EVENT","vr模式下不展示obu事件");
return;
}
Long last = intervalMap.get(info.getTypeCode());
if (last == null) {
last = 0L;

View File

@@ -118,6 +118,9 @@ public class MogoADASController implements IMogoADASController {
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
return;
}
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
handleAdasRecognizedData( rectInfo );
}
@@ -179,9 +182,6 @@ public class MogoADASController implements IMogoADASController {
}
private void invokeCallbackPerSecond( List< RectInfo > data ) {
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
List< RectInfo > newRef = data;
List< ADASRecognizedListResult > recognizedListResults = AdasObjectUtils.regroupData( newRef );
if ( recognizedListResults == null || recognizedListResults.isEmpty() ) {

View File

@@ -13,8 +13,6 @@ import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
import com.mogo.service.windowview.IMogoTopViewManager;
import com.mogo.service.windowview.IMogoWindowManager;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;