Merge remote-tracking branch 'origin/dev2_aiSdk' into dev2_aiSdk
This commit is contained in:
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -91,6 +91,7 @@
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
<option name="useQualifiedModuleNames" value="true" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
|
||||
@@ -183,20 +183,16 @@ public class MogoApplication extends AbsMogoApplication {
|
||||
*/
|
||||
private void prepareBaseService(IMogoServiceApis apis, long delay) {
|
||||
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
// 第三方平台的sn是服务端生成的,所以必须在返回后才能开启
|
||||
if (TextUtils.isEmpty(Utils.getSn())) {
|
||||
preparePassportEnvironment(apis, () -> {
|
||||
prepareSocketAndLocationServices(apis);
|
||||
});
|
||||
} else {
|
||||
preparePassportEnvironment(apis, null);
|
||||
prepareSocketAndLocationServices(apis);
|
||||
}
|
||||
}, delay);
|
||||
// 第三方平台的sn是由AI云SDK中服务调用通过服务端生成的
|
||||
preparePassportEnvironment();
|
||||
prepareSocketAndLocationServices(apis);
|
||||
//无延迟
|
||||
// UiThreadHandler.postDelayed(() -> {
|
||||
//
|
||||
// }, delay);
|
||||
}
|
||||
|
||||
private void preparePassportEnvironment(IMogoServiceApis apis, Runnable after) {
|
||||
private void preparePassportEnvironment() {
|
||||
// 配置云服务API
|
||||
MoGoAiCloudClientConfig clientConfig = MoGoAiCloudClientConfig.getInstance();
|
||||
// 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV
|
||||
@@ -257,6 +253,7 @@ public class MogoApplication extends AbsMogoApplication {
|
||||
}
|
||||
|
||||
private void prepareSocketAndLocationServices(IMogoServiceApis apis) {
|
||||
//开启Socket长链服务
|
||||
apis.getSocketManagerApi(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId());
|
||||
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
apis.getLocationInfoApi().start();
|
||||
|
||||
@@ -5,9 +5,9 @@ import android.os.Looper;
|
||||
|
||||
public class UiThreadHandler {
|
||||
|
||||
private static Handler sUiHandler = new Handler( Looper.getMainLooper() );
|
||||
private static final Handler sUiHandler = new Handler( Looper.getMainLooper() );
|
||||
|
||||
private static Object sToken = new Object();
|
||||
private static final Object sToken = new Object();
|
||||
|
||||
public UiThreadHandler() {
|
||||
}
|
||||
|
||||
@@ -15,10 +15,10 @@ import java.util.List;
|
||||
*/
|
||||
public class MogoModulePaths {
|
||||
|
||||
private static List< MogoModule > mMogoModules = new ArrayList<>();
|
||||
private static final List< MogoModule > mMogoModules = new ArrayList<>();
|
||||
|
||||
// 不需要启动APP也能运行的模块
|
||||
private static List< MogoModule > mMogoBaseModules = new ArrayList<>();
|
||||
private static final List< MogoModule > mMogoBaseModules = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 地图模块 fragment 路径
|
||||
|
||||
@@ -68,11 +68,20 @@ class MarkerDrawer {
|
||||
return drawMapMarkerImpl( markerShowEntity, matchRoadSide, zIndex, 0, listener );
|
||||
}
|
||||
|
||||
/**
|
||||
* add marker, {@link OnlineCarDrawer 如果是需要在3D模式下显示,则需要设置 {@link MogoMarkerOptions icon3DRes 资源id}}
|
||||
* @param markerShowEntity marker展示数据结构体
|
||||
* @param matchRoadSide 设置是否道路吸附,暂时没用到这个字段
|
||||
* @param zIndex zOrder
|
||||
* @param icon3DRes 3D Res资源
|
||||
* @param listener marker回调
|
||||
* @return {@link IMogoMarker}
|
||||
*/
|
||||
public IMogoMarker drawMapMarkerImpl( MarkerShowEntity markerShowEntity, boolean matchRoadSide, int zIndex, int icon3DRes, IMogoMarkerClickListener listener ) {
|
||||
if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) {
|
||||
return null;
|
||||
}
|
||||
MogoMarkerOptions options = new MogoMarkerOptions().icon3DRes( icon3DRes ).matchOnRoadSide( matchRoadSide ).owner( markerShowEntity.getMarkerType() ).zIndex( zIndex ).object( markerShowEntity ).latitude( markerShowEntity.getMarkerLocation().getLat() ).longitude( markerShowEntity.getMarkerLocation().getLon() );
|
||||
MogoMarkerOptions options = new MogoMarkerOptions().icon3DRes( icon3DRes ).set3DMode(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()).matchOnRoadSide( matchRoadSide ).owner( markerShowEntity.getMarkerType() ).zIndex( zIndex ).object( markerShowEntity ).latitude( markerShowEntity.getMarkerLocation().getLat() ).longitude( markerShowEntity.getMarkerLocation().getLon() );
|
||||
IMarkerView markerView = MapMarkerAdapter.getMarkerView( AbsMogoApplication.getApp(), markerShowEntity, options );
|
||||
if ( markerView instanceof OnlineCarMarkerView ) {
|
||||
try {
|
||||
|
||||
@@ -105,7 +105,7 @@ class OnlineCarDrawer {
|
||||
String sn = MarkerDrawer.getInstance().getPrimaryKeyFromEntity( markerOnlineCar );
|
||||
IMogoMarker mogoMarker = existCarMap.get( sn );
|
||||
if ( mogoMarker == null || mogoMarker.isDestroyed() ) {
|
||||
mogoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl( markerShowEntity, false, MarkerDrawer.MARKER_Z_INDEX_LOW, R.raw.othercar, listener );
|
||||
mogoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl( markerShowEntity, false, MarkerDrawer.MARKER_Z_INDEX_LOW, 0, listener );
|
||||
}
|
||||
if ( mogoMarker != null ) {
|
||||
mogoMarker.setVisible( true );
|
||||
|
||||
@@ -53,7 +53,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
IMogoADASControlStatusChangedListener,
|
||||
FragmentStackTransactionListener {
|
||||
|
||||
protected static final String TAG = MainActivity.class.getSimpleName();
|
||||
protected static final String TAG = "MainActivity";
|
||||
|
||||
protected IMogoServiceApis mServiceApis;
|
||||
protected IMogoFragmentManager mMogoFragmentManager;
|
||||
|
||||
@@ -119,7 +119,12 @@ public class MogoServices implements IMogoMapListener,
|
||||
/**
|
||||
* 自动刷新策略
|
||||
*/
|
||||
private AutoRefreshStrategy mAutoRefreshStrategy = new AutoRefreshStrategy();
|
||||
private final AutoRefreshStrategy mAutoRefreshStrategy = new AutoRefreshStrategy();
|
||||
/**
|
||||
* 手动刷新策略
|
||||
*/
|
||||
private final CustomRefreshStrategy mCustomRefreshStrategy = new CustomRefreshStrategy();
|
||||
|
||||
private MogoLatLng mLastAutoRefreshLocation = null;
|
||||
|
||||
private IMogoMapUIController mUiController;
|
||||
@@ -135,13 +140,9 @@ public class MogoServices implements IMogoMapListener,
|
||||
private boolean mIsVertical = false;
|
||||
|
||||
private MogoReceiver mAIAssistReceiver;
|
||||
|
||||
/**
|
||||
* 手动刷新策略
|
||||
*/
|
||||
private CustomRefreshStrategy mCustomRefreshStrategy = new CustomRefreshStrategy();
|
||||
private float mLastZoomLevel = 0;
|
||||
private RefreshModel mRefreshModel;
|
||||
|
||||
private float mLastZoomLevel = 0;
|
||||
private TtsConfigModleData mTtsModle;
|
||||
private long mRefreshRemainingTime = Long.MAX_VALUE;
|
||||
// 上次手动操作的中心点坐标
|
||||
@@ -169,7 +170,7 @@ public class MogoServices implements IMogoMapListener,
|
||||
*/
|
||||
private boolean mLoopRequest = false;
|
||||
|
||||
private Handler mHandler = new MainLooperHandler( Looper.getMainLooper() ) {
|
||||
private final Handler mHandler = new MainLooperHandler( Looper.getMainLooper() ) {
|
||||
|
||||
@Override
|
||||
protected void handleRefreshDecrease( Message msg ) {
|
||||
@@ -255,7 +256,7 @@ public class MogoServices implements IMogoMapListener,
|
||||
/**
|
||||
* 自动刷新回调
|
||||
*/
|
||||
private RefreshCallback mAutoRefreshCallback = new RefreshCallback< MarkerResponse >() {
|
||||
private final RefreshCallback mAutoRefreshCallback = new RefreshCallback< MarkerResponse >() {
|
||||
@Override
|
||||
public void onSuccess( MarkerResponse o ) {
|
||||
MapMarkerManager.getInstance().onSyncMarkerResponse( o );
|
||||
@@ -285,7 +286,7 @@ public class MogoServices implements IMogoMapListener,
|
||||
*/
|
||||
private int mCurrentLimit = -1;
|
||||
|
||||
private IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
|
||||
private final IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
|
||||
|
||||
@Override
|
||||
public void onSearchUIShow( boolean visible ) {
|
||||
@@ -433,10 +434,10 @@ public class MogoServices implements IMogoMapListener,
|
||||
return;
|
||||
}
|
||||
mRefreshModel.refreshExplorerWayData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback );
|
||||
if ( !DebugConfig.
|
||||
isNeedUploadCoordinatesDurationInTime() ) {
|
||||
MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
|
||||
}
|
||||
// if ( !DebugConfig.
|
||||
// isNeedUploadCoordinatesDurationInTime() ) { //todo 实时在线车辆需要注释,否则在2D模式下不能展示
|
||||
// }
|
||||
MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
|
||||
|
||||
Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount );
|
||||
}
|
||||
|
||||
@@ -547,7 +547,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
|
||||
getOnlineCarDataImpl( latLng, onlyFocus, onlySameCity, limit, radius, true );
|
||||
}
|
||||
|
||||
private Runnable runnable = new Runnable() {
|
||||
private final Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getOnlineCarDataImpl( mCarLatLng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false );
|
||||
@@ -579,9 +579,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
|
||||
int radius,
|
||||
boolean fitBounds ) {
|
||||
|
||||
if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) {
|
||||
return;
|
||||
}
|
||||
// if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) {//todo 实时在线车辆需要注释,否则在2D模式下不能展示
|
||||
// return;
|
||||
// }
|
||||
|
||||
if ( DebugConfig.isDebug() ) {
|
||||
if ( !DebugConfig.isRequestOnlineCarData() ) {
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -4,8 +4,7 @@ import android.content.Context;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
import android.widget.ImageView;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -14,16 +13,13 @@ import com.amap.api.maps.AMap;
|
||||
import com.amap.api.maps.CameraUpdate;
|
||||
import com.amap.api.maps.CameraUpdateFactory;
|
||||
import com.amap.api.maps.UiSettings;
|
||||
import com.amap.api.maps.model.CameraPosition;
|
||||
import com.amap.api.navi.AMapNaviView;
|
||||
import com.amap.api.navi.AMapNaviViewOptions;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.small.map.animation.DirectionRotateAnimation;
|
||||
import com.mogo.utils.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
@@ -35,7 +31,6 @@ import java.io.IOException;
|
||||
public class SmallMapDirectionView extends RelativeLayout {
|
||||
private String styleFilePath = "/mnt/sdcard/amap/small_map_style.data";
|
||||
|
||||
private ImageView mIvMapBorder;
|
||||
private AMapNaviView mAMapNaviView;
|
||||
private DirectionRotateAnimation mRotateAnimation;
|
||||
private int lastAngle = 0;
|
||||
@@ -62,7 +57,6 @@ public class SmallMapDirectionView extends RelativeLayout {
|
||||
mRotateAnimation = new DirectionRotateAnimation(context, null);
|
||||
|
||||
AbsMogoApplication.getLayoutInflaterNoSkin().inflate(R.layout.module_small_map_view, this);
|
||||
mIvMapBorder = findViewById(R.id.ivMapBorder);
|
||||
mAMapNaviView = findViewById(R.id.aMapNaviView);
|
||||
mAMapNaviView.onCreate(null);
|
||||
|
||||
@@ -136,7 +130,7 @@ public class SmallMapDirectionView extends RelativeLayout {
|
||||
options.setNaviArrowVisible(false);
|
||||
// 通过路线是否自动置灰,仅支持驾车导航
|
||||
options.setAfterRouteAutoGray(false);
|
||||
//options.setZoom(((int) 9));
|
||||
options.setZoom(((int) 10));
|
||||
//options.setPointToCenter(0.7D, 0.5D);
|
||||
// 2D模式
|
||||
options.setTilt(0);
|
||||
@@ -151,21 +145,6 @@ public class SmallMapDirectionView extends RelativeLayout {
|
||||
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
|
||||
aMap.moveCamera(cameraUpdate);
|
||||
|
||||
aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
|
||||
@Override
|
||||
public void onCameraChange(CameraPosition cameraPosition) {
|
||||
if (cameraPosition != null) {
|
||||
//Log.w("onCameraChange", "cameraPosition=" + cameraPosition.bearing);
|
||||
changeAngle((int) cameraPosition.bearing);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraChangeFinish(CameraPosition cameraPosition) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {
|
||||
|
||||
@Override
|
||||
@@ -229,46 +208,22 @@ public class SmallMapDirectionView extends RelativeLayout {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
mIvMapBorder.setOnClickListener( view -> {
|
||||
setOnClickListener(view -> {
|
||||
MogoApisHandler.getInstance().getApis()
|
||||
.getMapServiceApi()
|
||||
.getMapUIController()
|
||||
.changeMapMode(
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getAdasControllerApi()
|
||||
.getCurrentSkinMode()
|
||||
.getApis()
|
||||
.getAdasControllerApi()
|
||||
.getCurrentSkinMode()
|
||||
);
|
||||
} );
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改角度
|
||||
*
|
||||
* @param angle 角度 0 - 359度旋转,相对于自身中心位置
|
||||
*/
|
||||
public void changeAngle(int angle) {
|
||||
int tempAngle = 360 - angle;
|
||||
|
||||
if (tempAngle <= 180) {
|
||||
tempAngle = tempAngle;
|
||||
} else {
|
||||
tempAngle = -(360 - tempAngle);
|
||||
}
|
||||
|
||||
mRotateAnimation.setFromDegrees(lastAngle);
|
||||
mRotateAnimation.setToDegrees(tempAngle);
|
||||
|
||||
//设置线性插值,可以解决旋转一圈后卡顿问题
|
||||
mRotateAnimation.setInterpolator(new LinearInterpolator());
|
||||
//设置旋转一圈时间
|
||||
mRotateAnimation.setDuration(300);
|
||||
//控件动画结束时是否保持动画最后的状态
|
||||
mRotateAnimation.setFillAfter(true);
|
||||
mIvMapBorder.startAnimation(mRotateAnimation);
|
||||
// 刷新最后一次角度
|
||||
lastAngle = tempAngle;
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="@dimen/module_small_map_border_view_width"
|
||||
android:layout_height="@dimen/module_small_map_border_view_width"
|
||||
tools:parentTag="RelativeLayout"
|
||||
app:roundLayoutRadius="360dp">
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/dp_40"
|
||||
tools:parentTag="RelativeLayout">
|
||||
|
||||
|
||||
<View
|
||||
@@ -28,11 +28,4 @@
|
||||
|
||||
</com.mogo.module.common.view.RoundLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivMapBorder"
|
||||
android:layout_width="@dimen/module_small_map_border_view_width"
|
||||
android:layout_height="@dimen/module_small_map_border_view_width"
|
||||
android:layout_centerInParent="true"
|
||||
android:src="@drawable/module_small_map_view_border" />
|
||||
|
||||
</merge>
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
<dimen name="module_small_map_view_width">250px</dimen>
|
||||
<dimen name="module_small_map_view_height">250px</dimen>
|
||||
<dimen name="module_small_map_view_x">1525px</dimen>
|
||||
<dimen name="module_small_map_view_y">695px</dimen>
|
||||
<dimen name="module_small_map_view_x">1620px</dimen>
|
||||
<dimen name="module_small_map_view_y">780px</dimen>
|
||||
|
||||
<dimen name="module_small_map_big_view_x">0px</dimen>
|
||||
<dimen name="module_small_map_big_view_y">0px</dimen>
|
||||
|
||||
@@ -47,6 +47,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
private static String TAG = "MoGoV2XCloundDataManager";
|
||||
private boolean isSelfLineClear;
|
||||
private List fillPoints = new ArrayList();//停止线经纬度合集
|
||||
private boolean isFirstLocation = false;
|
||||
private MogoLatLng mNewLocation;
|
||||
|
||||
private static long showTime = 0;
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
@@ -57,34 +61,35 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
@Override
|
||||
public void analysisV2XCloundDataEvent(V2XWarningEntity cloundWarningInfo) {
|
||||
Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> ");
|
||||
|
||||
mCloundWarningInfo = cloundWarningInfo;
|
||||
showTime = mCloundWarningInfo.getShowTime();
|
||||
pointsBetween();
|
||||
|
||||
//发送预警提示
|
||||
MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getType(), MogoReceiver.ACTION_V2X_FRONT_WARNING);
|
||||
|
||||
isSelfLineClear = false;
|
||||
isFirstLocation = false;
|
||||
|
||||
Log.d(V2XConst.LOG_NAME_WARN, "direction = " + cloundWarningInfo.getDirection());
|
||||
if (cloundWarningInfo.getDirection() == 1) { //前方
|
||||
//停止线前方画线
|
||||
MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle());
|
||||
//停止线前方画线
|
||||
WorkThreadHandler.getInstance().postDelayed(() -> {
|
||||
//添加停止线marker
|
||||
//添加停止线
|
||||
drawStopLineWith2Resource();
|
||||
//二轮车和行人的渲染和移动
|
||||
V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
|
||||
//绘制识别物与交汇点连线,并且更新连线数据
|
||||
drawStopLine(cloundWarningInfo, newLocation);
|
||||
}, 200);
|
||||
//添加停止线marker
|
||||
handleStopLine();
|
||||
}, 800);
|
||||
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
|
||||
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
|
||||
V2XServiceManager.getMoGoStopPolylineManager().clearLine();
|
||||
isSelfLineClear = true;
|
||||
}, 8000);
|
||||
}, showTime);
|
||||
|
||||
} else { //左侧或者右侧
|
||||
WorkThreadHandler.getInstance().postDelayed(() -> {
|
||||
@@ -92,17 +97,15 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
drawOtherObjectLine(cloundWarningInfo);
|
||||
//二轮车和行人的渲染和移动
|
||||
V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
|
||||
}, 200);
|
||||
}, 500);
|
||||
|
||||
//延迟3秒清理线
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
|
||||
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
|
||||
|
||||
isSelfLineClear = true;
|
||||
}, 8000);
|
||||
}, showTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +113,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
for (int i = 0; i < fillPoints.size(); i++) {
|
||||
V2XWarningEntity entity = new V2XWarningEntity();
|
||||
MogoLatLng latLng = (MogoLatLng) fillPoints.get(i);
|
||||
Log.d("liyz", "handleStopLine lat = " + latLng.lat + "--lon =" + latLng.lon);
|
||||
entity.setLat(latLng.lat);
|
||||
entity.setLon(latLng.lon);
|
||||
entity.setCollisionLat(mCloundWarningInfo.getCollisionLat());
|
||||
@@ -124,10 +126,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
* 2D资源绘制停止线
|
||||
* */
|
||||
private void drawStopLineWith2Resource() {
|
||||
|
||||
//自车位置39.97665425796924--116.41769983329762
|
||||
mCloundWarningInfo.setCarLocation(new MogoLatLng(39.97665425796924,116.41769983329762));//测试数据
|
||||
|
||||
MogoLatLng carlo = mCloundWarningInfo.getCarLocation();
|
||||
if (carlo == null) {
|
||||
double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon();
|
||||
@@ -136,11 +134,11 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
}
|
||||
//自车行驶方向的前方*米的经纬度,该经纬度在停止线上
|
||||
MogoLatLng drawStopLineLon = LocationUtils.getNewLocation(carlo, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
|
||||
Log.d(TAG, "2D资源绘制停止线"+drawStopLineLon);
|
||||
Log.d(TAG, "2D资源绘制停止线" + drawStopLineLon);
|
||||
MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
|
||||
.latitude(drawStopLineLon.getLat())
|
||||
.longitude(drawStopLineLon.getLon())
|
||||
.anchor(0.5f, 0.5f)
|
||||
.anchor(1.0f, 1.0f)
|
||||
.zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH);
|
||||
|
||||
optionsRipple
|
||||
@@ -148,9 +146,9 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(TYPE_MARKER_CLOUD_STOP_LINE_DATA, optionsRipple);
|
||||
stopLine.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext())));
|
||||
stopLine.showInfoWindow();
|
||||
// UiThreadHandler.postDelayed(() -> {
|
||||
// stopLine.hideInfoWindow();
|
||||
// }, 8000);
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
stopLine.hideInfoWindow();
|
||||
}, showTime);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,20 +159,15 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
if (info != null) {
|
||||
if (polyLine != null) {
|
||||
Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null");
|
||||
polyLine.setPoints(Arrays.asList(new MogoLatLng(info.getLat(), info.getLon()),
|
||||
new MogoLatLng(info.getCollisionLat(), info.getCollisionLon())));
|
||||
polyLine.setPoints(Arrays.asList(new MogoLatLng(mNewLocation.lat, mNewLocation.lon),
|
||||
new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon)));
|
||||
polyLine.setTransparency(0.5f);
|
||||
} else {
|
||||
Log.e(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine == null");
|
||||
DrawLineInfo lineInfo = new DrawLineInfo();
|
||||
MogoLatLng startLatlng = new MogoLatLng(
|
||||
((MogoLatLng) fillPoints.get(0)).lat,
|
||||
((MogoLatLng) fillPoints.get(0)).lon);
|
||||
Log.d(V2XConst.LOG_NAME_WARN, "stop drawStopLine lon =" + startLatlng.lon + "--lat =" + startLatlng.lat);
|
||||
MogoLatLng startLatlng = new MogoLatLng(mNewLocation.lat, mNewLocation.lon);
|
||||
MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon);
|
||||
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + mogoLatLng.lon + "--lat =" + mogoLatLng.lat);
|
||||
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + endLatlng.lon + "--lat =" + endLatlng.lat);
|
||||
|
||||
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine endLatlng lon =" + endLatlng.lon + "--lat =" + endLatlng.lat
|
||||
+ "--startLatlng lon = " + startLatlng.lon + "-lat = " + startLatlng.lat);
|
||||
lineInfo.setStartLocation(startLatlng);
|
||||
lineInfo.setEndLocation(endLatlng);
|
||||
lineInfo.setHeading(info.heading);
|
||||
@@ -201,7 +194,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
new MogoLatLng(info.getCollisionLat(), info.getCollisionLon())));
|
||||
polyLine.setTransparency(0.5f);
|
||||
} else {
|
||||
Log.e(V2XConst.LOG_NAME_WARN, "polyLine == null");
|
||||
DrawLineInfo lineInfo = new DrawLineInfo();
|
||||
MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon());
|
||||
MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon());
|
||||
@@ -228,7 +220,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
*/
|
||||
@Override
|
||||
public void onCarLocationChanged2(Location latLng) {
|
||||
Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear);
|
||||
// Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear);
|
||||
//当行人经纬度交点 开始画线,否则清理
|
||||
mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
|
||||
drawSlefCarLine(latLng);
|
||||
@@ -246,17 +238,22 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
if (!isSelfLineClear) {
|
||||
IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline();
|
||||
if (mCloundWarningInfo != null) {
|
||||
if (!isFirstLocation) {
|
||||
mNewLocation = getMogoLat(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
|
||||
Log.d(V2XConst.LOG_NAME_WARN, "drawSlefCarLine lon = " + mNewLocation.lon + "---lat = " + mNewLocation.lat);
|
||||
isFirstLocation = true;
|
||||
}
|
||||
if (mogoPolyline != null) {
|
||||
mogoPolyline.setPoints(Arrays.asList(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()),
|
||||
new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(),
|
||||
mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon())));
|
||||
new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lat : mCloundWarningInfo.getCollisionLat(),
|
||||
mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lon : mCloundWarningInfo.getCollisionLon())));
|
||||
mogoPolyline.setTransparency(0.5f);
|
||||
} else {
|
||||
Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth());
|
||||
// Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth());
|
||||
DrawLineInfo info = new DrawLineInfo(); // 对象
|
||||
MogoLatLng startLatlng = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude());
|
||||
MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(),
|
||||
mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon());
|
||||
MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lat : mCloundWarningInfo.getCollisionLat(),
|
||||
mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lon : mCloundWarningInfo.getCollisionLon());
|
||||
info.setHeading(latLng.getBearing());
|
||||
info.setStartLocation(startLatlng);
|
||||
info.setEndLocation(endLatlng);
|
||||
@@ -297,12 +294,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private MogoLatLng getMogoLat(MogoLatLng latlng) {
|
||||
MogoLatLng newLocation = LocationUtils.getNewLocation(latlng, mCloundWarningInfo.getDistance(), mCloundWarningInfo.getDirection());
|
||||
|
||||
return newLocation;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.mogo.module.v2x.marker.OptimalSpeedMarkerView;
|
||||
import com.mogo.module.v2x.marker.V2XFrontTargetMarkerView;
|
||||
import com.mogo.module.v2x.scenario.view.IV2XMarker;
|
||||
import com.mogo.module.v2x.utils.LocationUtils;
|
||||
import com.mogo.utils.UiThreadHandler;
|
||||
import com.mogo.utils.ViewUtils;
|
||||
import com.mogo.utils.WorkThreadHandler;
|
||||
|
||||
@@ -65,6 +66,9 @@ public class V2XWarningMarker implements IV2XMarker {
|
||||
optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple);
|
||||
optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(mContext)));
|
||||
optimalMarker.showInfoWindow();
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
optimalMarker.hideInfoWindow();
|
||||
}, 8000);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
|
||||
@@ -430,7 +430,7 @@ public class TestOnLineCarUtils {
|
||||
try {
|
||||
InputStream inputStream = V2XUtils.getApp()
|
||||
.getResources()
|
||||
.openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi);
|
||||
.openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi_1);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
int len = -1;
|
||||
byte[] buffer = new byte[1024];
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"sceneId": "200008",
|
||||
"alarmContent": "拥堵路线推荐",
|
||||
"expireTime": 10000,
|
||||
"sceneCategory": 0,
|
||||
"sceneDescription": "拥堵路线推荐",
|
||||
"sceneName": "拥堵路线推荐",
|
||||
"sceneLevel": 0,
|
||||
"videoUrl": "",
|
||||
"videoChannel": "",
|
||||
"videoSn": "",
|
||||
"tts": "发现前方拥堵,最优路线快6分钟",
|
||||
"zoom": false,
|
||||
"zoomScale": 15,
|
||||
"userHead": "",
|
||||
"msgImgUrl": "",
|
||||
"lat":39.969088,
|
||||
"lon":116.41808,
|
||||
"polyline": [
|
||||
[
|
||||
116.417388,39.983351
|
||||
],
|
||||
[
|
||||
116.417351,39.9841
|
||||
],
|
||||
[
|
||||
116.417286,39.985423
|
||||
],
|
||||
[
|
||||
116.417233,39.98673
|
||||
],
|
||||
[
|
||||
116.417179,39.988156
|
||||
],
|
||||
[
|
||||
116.417158,39.988493
|
||||
],
|
||||
[
|
||||
116.417142,39.989245
|
||||
],
|
||||
[
|
||||
116.417174,39.990199
|
||||
]
|
||||
],
|
||||
"recommendPolyline": [
|
||||
[
|
||||
116.417388,39.983351
|
||||
],
|
||||
[
|
||||
116.417351,39.9841
|
||||
],
|
||||
[
|
||||
116.417286,39.985423
|
||||
],
|
||||
[
|
||||
116.417233,39.98673
|
||||
],
|
||||
[
|
||||
116.417179,39.988156
|
||||
],
|
||||
[
|
||||
116.417158,39.988493
|
||||
],
|
||||
[
|
||||
116.417142,39.989245
|
||||
],
|
||||
[
|
||||
116.417174,39.990199
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -20,9 +20,13 @@
|
||||
"direction": 1,
|
||||
"speed": 11.108121,
|
||||
"targetColor": "#FF4040",
|
||||
"stopLineDistance": 15,
|
||||
"stopLineDistance": 3000,
|
||||
"warningContent": "小心行人",
|
||||
"heading": 0,
|
||||
"showTime": 3000,
|
||||
"roadwidth": 60.0
|
||||
"showTime": 8000,
|
||||
"roadwidth": 60.0,
|
||||
"carLocation": {
|
||||
"lat": 39.97665425,
|
||||
"lon": 116.41769983
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user