@@ -27,6 +27,7 @@ import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.utils.UiThreadHandler ;
import com.mogo.utils.ViewUtils ;
import com.mogo.utils.WorkThreadHandler ;
import com.mogo.utils.network.utils.Util ;
import java.util.ArrayList ;
import java.util.Arrays ;
@@ -58,9 +59,10 @@ public class V2XWarningMarker implements IV2XMarker {
/*
* 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算
* */
private MogoLatLng middleLocationInStopLine = new MogoLatLng ( 0 , 0 ) ;
private static long showTime = 5 000;
private MogoLatLng middleLocationInStopLine = new MogoLatLng ( 0 , 0 ) ;
private static long showTime = 6 000;
private float bearing ;
private boolean hasStopLines = false ;
@Override
public void drawPOI ( Object entity ) {
@@ -75,40 +77,39 @@ public class V2XWarningMarker implements IV2XMarker {
}
public void drawLineWithEntity ( ) {
showTime = mCloundWarningInfo . getShowTime ( ) > 0 ? mCloundWarningInfo . getShowTime ( ) * 1000 : 5 000;
Log . d ( TAG , " 显示时间为++ " + String . valueOf ( showTime ) + " 识别物类型: " + String . valueOf ( mCloundWarningInfo . getType ( ) ) ) ;
pointsBetween ( ) ;
showTime = mCloundWarningInfo . getShowTime ( ) > 0 ? mCloundWarningInfo . getShowTime ( ) * 1000 : 6 000;
fillPointOnStopLine ( ) ;
bearing = V2XLocationListener . getInstance ( ) . getLastCarLocation ( ) . getBearing ( ) ;
hasStopLines = mCloundWarningInfo . getStopLines ( ) . size ( ) > 0 ;
isSelfLineClear = false ;
isFirstLocation = false ;
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( WARNING_ARROWS ) ;
if ( fillPoints . size ( ) > 0 ) { //存在停止线的情况 TODO
if ( fillPoints . size ( ) > 0 ) {
//存在停止线的情况 自车与停止线之间绘制蓝色安全线 停止线向前50m绘制红色预警线
middleLocationInStopLine = getMiddleLocationInStopLine ( ) ;
//如果是正前方类型,红色绘制区域从停止线向前绘制50米
MogoLatLng warningLocation = Trigonometric . getNewLocation ( middleLocationInStopLine , 50 , mCloundWarningInfo . getAngle ( ) ) ;
//停止线前方画线
WorkThreadHandler . getInstance ( ) . postDelayed ( ( ) - > {
if ( carLocation . lat ! = 0 & & carLocation . lon ! = 0 ) {
//在自车与停止线直线绘制蓝色预警线
drawSelfCarLine ( carLocation . lon , carLocation . lat , bearing ) ;
} else {
Log . d ( TAG , " 自车定位数据为空carLocation == null " ) ;
}
//二轮车和行人的渲染和移动
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( TYPE_MARKER_CLOUD_WARN_DATA ) ;
//获取停止线前方50m坐标点
MogoLatLng warningLocation = Trigonometric . getNewLocation ( middleLocationInStopLine ,
50 , angleForCarMoveDirection ( ) ) ;
//停止线向前方50m绘制红色预警线
drawRedWarningLineFrontOfStopLine ( mCloundWarningInfo , middleLocationInStopLine ,
warningLocation ) ;
V2XWarnDataDrawer . getInstance ( ) . renderWarnData ( mCloundWarningInfo ) ;
//绘制识别物与交汇点连线,并且更新连线数据
drawRedWarningLineFrontOfStopLine ( mCloundWarningInfo , middleLocationInStopLine , warningLocation ) ;
//添加停止线marker
handleStopLine ( ) ;
if ( carLocation . lat ! = 0 & & carLocation . lon ! = 0 ) {
//自车画线
drawSelfCarLine ( carLocation . lon , carLocation . lat , bearing ) ;
} else {
Log . d ( TAG , " 自车定位数据为空carLocation == null " ) ;
}
} , 0 ) ;
UiThreadHandler . postDelayed ( ( ) - > {
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . clear Line ( ) ;
V2XServiceManager . getMoGoWarnPolylineManager ( ) . clearLine ( ) ;
V2XServiceManager . getMoGoStopPolylineManager ( ) . clearLine ( ) ;
isSelfLineClear = true ;
} , showTime ) ;
Log . d ( TAG , " 显示时间为++ " + String . valueOf ( showTime ) + " 识别物类型: " +
String . valueOf ( mCloundWarningInfo . getType ( ) ) ) ;
clearAll Line ( ) ;
} else { //无停止线
WorkThreadHandler . getInstance ( ) . postDelayed ( ( ) - > {
@@ -116,43 +117,48 @@ public class V2XWarningMarker implements IV2XMarker {
drawOtherObjectLine ( mCloundWarningInfo ) ;
//二轮车和行人的渲染和移动
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( TYPE_MARKER_CLOUD_WARN_DATA ) ;
V2XWarnDataDrawer . getInstance ( ) . renderWarnData ( mCloundWarningInfo ) ;
//车辆静止的时候
if ( carLocation . lat ! = 0 & & carLocation . lon ! = 0 ) {
if ( carLocation . lat ! = 0 & & carLocation . lon ! = 0 ) {
drawSelfCarLine ( carLocation . lon , carLocation . lat , bearing ) ;
} else {
Log . d ( TAG , " 数据为空carLocation == null " ) ;
} else {
Log . d ( TAG , " 数据为空carLocation == null " ) ;
}
V2XWarnDataDrawer . getInstance ( ) . renderWarnData ( mCloundWarningInfo ) ;
} , 0 ) ;
//延迟3秒清理线
UiThreadHandler . postDelayed ( ( ) - > {
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . clearLine ( ) ;
V2XServiceManager . getMoGoWarnPolylineManager ( ) . clearLine ( ) ;
isSelfLineClear = true ;
} , showTime ) ;
clearAllLine ( ) ;
}
//预警蒙层
MarkerServiceHandler . getApis ( ) . getV2XListenerManager ( ) . warningChangedForListenerWithDirection ( mCloundWarningInfo . getDirection ( ) , MogoReceiver . ACTION_V2X_FRONT_WARNING ) ;
MarkerServiceHandler . getApis ( ) . getV2XListenerManager ( ) . warningChangedForListenerWithDirection
( mCloundWarningInfo . getDirection ( ) , MogoReceiver . ACTION_V2X_FRONT_WARNING ) ;
}
/**
* 场景如:车辆行驶正前方绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置
*/
/*
*
* */
public double angleForCarMoveDirection ( ) {
MogoLatLng startLatLng = new MogoLatLng ( carLocation . lat , carLocation . lon ) ;
MogoLatLng endLatLng = new MogoLatLng ( middleLocationInStopLine . lat , middleLocationInStopLine . lon ) ;
double angle = Trigonometric . getAngle ( startLatLng . lon , startLatLng . lat , endLatLng . lon , endLatLng . lat ) ;
Log . d ( TAG , " angle== " + String . valueOf ( angle ) ) ;
return angle ;
}
/*绘制停止线前方50m的红色预警线
* startLatLng: 划线起点=停止线上的坐标点
* mogoLatLng: 停止线前方50m坐标点
* */
private void drawRedWarningLineFrontOfStopLine ( V2XWarningEntity info , MogoLatLng
startLatLng , MogoLatLng mogoLatLng ) {
if ( info ! = null ) {
double angle = Trigonometric . getAngle ( startLatLng . lon , startLatLng . lat , mogoLatLng . lon , mogoLatLng . lat ) ;
Log . d ( TAG , " angle==drawRedWarningLineFrontOfStopLine: " + String . valueOf ( angle ) ) ;
IMogoPolyline polyLine = V2XServiceManager . getMoGoStopPolylineManager ( ) . getMogoStopPolyline ( ) ;
MogoLatLng endLatlng = new MogoLatLng ( mogoLatLng . lat , mogoLatLng . lon ) ;
float distance = CoordinateUtils . calculateLineDistance ( startLatLng . lon , startLatLng . lat , endLatlng . lon , endLatlng . lat ) ;
MogoLatLng addMiddleLoc = Trigonometric . getNewLocation ( startLatLng , distance / 2 , mCloundWarningInfo . getAngle ( ) ) ;
Log . d ( TAG , " 红色区域起始点 = " + startLatLng . lon + " , " + startLatLng . lat +
" 中间点坐标: " + addMiddleLoc . lon + " , " + addMiddleLoc . lat
+ " 终点 " + endLatlng . lon + " , " + endLatlng . lat ) ;
MogoLatLng addMiddleLoc = Trigonometric . getNewLocation ( startLatLng , 25 , angle ) ;
if ( polyLine ! = null ) {
Log . d ( V2XConst . LOG_NAME_WARN , " drawStopLine polyLine != null " ) ;
Log . d ( TAG , " drawStopLine polyLine != null " ) ;
polyLine . setPoints ( Arrays . asList ( startLatLng , addMiddleLoc , endLatlng ) ) ;
polyLine . setTransparency ( 0 . 5f ) ;
} else {
@@ -163,20 +169,39 @@ public class V2XWarningMarker implements IV2XMarker {
locations . add ( endLatlng ) ;
lineInfo . setLocations ( locations ) ;
lineInfo . setHeading ( info . heading ) ;
Log . d ( V2XConst . LOG_NAME_WARN , " drawStopLine width = " + info . getRoadwidth ( ) ) ;
Log . d ( TAG , " drawStopLine width = " + info . getRoadwidth ( ) ) ;
lineInfo . setWidth ( info . getRoadwidth ( ) * 14 + 5 ) ;
V2XServiceManager . getMoGoStopPolylineManager ( ) . drawStopPolyline ( getContext ( ) , lineInfo ) ;
}
Log . d ( TAG , " 停止线前方50m区域的三个坐标点是: " + startLatLng . lon + " , " + startLatLng . lat +
" 中间点坐标: " + addMiddleLoc . lon + " , " + addMiddleLoc . lat
+ " 终点 " + endLatlng . lon + " , " + endLatlng . lat ) ;
} else {
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . clearLine( ) ;
V2XServiceManager . getMoGoStopPolylineManager ( ) . clearLine ( ) ;
clearAll Line ( ) ;
}
}
public void clearAllLine ( ) {
UiThreadHandler . postDelayed ( ( ) - > {
Log . d ( TAG , " 清除所有预警线的时间是: " + String . valueOf ( showTime ) ) ;
//清除识别物到碰撞点预警线
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . clearLine ( ) ;
//清除车前方第一条预警线
V2XServiceManager . getMoGoWarnPolylineManager ( ) . clearLine ( ) ;
//清除停止线
V2XServiceManager . getMoGoStopPolylineManager ( ) . clearLine ( ) ;
//清除小箭头
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( WARNING_ARROWS ) ;
//清除停止线
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( TYPE_MARKER_CLOUD_STOP_LINE_DATA ) ;
isSelfLineClear = true ;
} , showTime ) ;
}
/**
* 补点后的停止线经纬度合集
*/
public void pointsBetween ( ) {
public void fillPointOnStopLine ( ) {
try {
fillPoints . clear ( ) ;
List stopLines = mCloundWarningInfo . getStopLines ( ) ;
@@ -217,64 +242,72 @@ public class V2XWarningMarker implements IV2XMarker {
V2XWarnDataDrawer . getInstance ( ) . renderStopLineData ( entity ) ;
}
}
//移动完成以后, 3s后消失
UiThreadHandler . postDelayed ( ( ) - > {
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( TYPE_MARKER_CLOUD_STOP_LINE_DATA ) ;
} , mCloundWarningInfo . getShowTime ( ) ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
}
private MogoLatLng getMogoLat ( MogoLatLng latlng ) {
MogoLatLng newLocation = Trigonometric . getNewLocation ( latlng , mCloundWarningInfo . getStopLineDistance ( ) , mCloundWarningInfo . getAngle ( ) ) ;
MogoLatLng newLocation = Trigonometric . getNewLocation ( latlng , mCloundWarningInfo . getStopLineDistance ( ) ,
mCloundWarningInfo . getAngle ( ) ) ;
return newLocation ;
}
/*
* 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算
* 自车前方的点,落点 在停止线上--通过自车位置与距离停止线之间的距离计算
* */
private MogoLatLng getMiddleLocationInStopLine ( ) {
Log . d ( TAG , " 计算停止线上的某个点 " + String . valueOf ( carLocation . lat + " , " + String . valueOf ( carLocation . lon ) ) ) ;
if ( carLocation . lat = = 0 | | carLocation . lon = = 0 ) {
Log . d ( TAG , " 获取不到车的位置 " ) ;
}
MogoLatLng newLocation = Trigonometric . getNewLocation ( carLocation , mCloundWarningInfo . getStopLineDistance ( ) , mCloundWarningInfo . getAngle ( ) ) ;
MogoLatLng newLocation = new MogoLatLng ( 0 , 0 ) ;
if ( mCloundWarningInfo . getStopLines ( ) . size ( ) > 1 ) {
MogoLatLng x = mCloundWarningInfo . getStopLines ( ) . get ( 0 ) ;
MogoLatLng y = mCloundWarningInfo . getStopLines ( ) . get ( 1 ) ;
float distance = CoordinateUtils . calculateLineDistance ( x . lon , x . lat , y . lon , y . lat ) ;
double angle = Trigonometric . getAngle ( x . lon , x . lat , y . lon , y . lat ) ;
newLocation = Trigonometric . getNewLocation ( x , distance * 0 . 5 , angle ) ;
} else {
Log . d ( TAG , " 停止线返回坐标点数量不正确 " + String . valueOf ( mCloundWarningInfo . getStopLines ( ) . size ( ) ) ) ;
}
return newLocation ;
}
/**
* 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警)
* 存在停止线时自车与停止线之间为蓝色预警
* 不存在停止线,自车与预碰撞点之间为红色预警
* lon 自车经度
* lat 自车纬度
*/
public void drawSelfCarLine ( double lon , double lat , float bearing ) {
if ( ! isSelfLineClear ) {
IMogoPolyline mogoPolyline = V2XServiceManager . getMoGoWarnPolylineManager ( ) . getMogoWarnPolyline ( ) ;
if ( mCloundWarningInfo ! = null ) {
MogoLatLng startLatlng = new MogoLatLng ( 0 , 0 ) ;
MogoLatLng end Latlng = new MogoLatLng ( 0 , 0 ) ;
MogoLatLng addMiddleLoc = new MogoLatLng ( 0 , 0 ) ;
I MogoPolyline mogoPolyline = V2XServiceManager . getMoGoWarnPolylineManager ( ) . getMogoWarnPolyline ( ) ;
MogoLatLng start Latlng = new MogoLatLng ( 0 , 0 ) ;
MogoLatLng endLatlng = new MogoLatLng ( 0 , 0 ) ;
MogoLatLng addMiddleLoc = new MogoLatLng ( 0 , 0 ) ;
if ( ! isFirstLocation ) {
carLocation = getMogoLat ( new MogoLatLng ( lat , lon ) ) ;
isFirstLocation = true ;
}
//绘制线的终点(在停止线上或者预碰撞点上)
endLatlng = new MogoLatLng ( mCloundWarningInfo . getDirection ( ) = = ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine . lat : mCloundWarningInfo . getCollisionLat ( ) ,
mCloundWarningInfo . getDirection ( ) = = ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine. lon : mCloundWarningInfo . getCollisionLon ( ) ) ;
//自车位置
endLatlng = new MogoLatLng ( hasStopLines ?
middleLocationInStopLine . lat : mCloundWarningInfo . getCollisionLat ( ) , hasStopLines ?
middleLocationInStopLine . lon : mCloundWarningInfo . getCollisionLon ( ) ) ;
startLatlng = new MogoLatLng ( lat , lon ) ;
float distance = CoordinateUtils . calculateLineDistance ( startLatlng . lon , startLatlng . lat , endLatlng . lon , endLatlng . lat ) ;
//扩展点为了渐变色添加
addMiddleLoc = Trigonometric . getNewLocation ( startLatlng , distance / 2 , Trigonometric . getAngle ( startLatlng . lon , startLatlng . lat , endLatlng . lon , endLatlng . lat ) ) ;
Log . d ( TAG , " 自车为起点绘制 自车; " + startLatlng . lon + " , " + start Latlng . lat +
" 中间扩展点 " + addMiddle Loc . lon + " , " + addMiddleLoc . lat + " 终点: " + endLatlng . lon + " , " + endLatlng . lat ) ;
addMiddleLoc = Trigonometric . getNewLocation ( startLatlng , distance / 2 ,
Trigonometric . getAngle ( startLatlng . lon , startLatlng . lat , endLatlng . lon , end Latlng . lat ) ) ;
Log . d ( TAG , " angle==扩展点为了渐变色添加: " +
String . valueOf ( Trigonometric . getAngle ( startLatlng . lon , startLatlng . lat , endLatlng . lon , endLatlng . lat ) ) ) ;
if ( mogoPolyline ! = null ) {
mogoPolyline . setPoints ( Arrays . asList ( startLatlng , addMiddleLoc , endLatlng ) ) ;
mogoPolyline . setTransparency ( 0 . 5f ) ;
} else {
DrawLineInfo info = new DrawLineInfo ( ) ; // 对象
Log . d ( TAG , " 安全区域的画线点为 " + " 起点: " + startLatlng + " 中间点: " + addMiddleLoc + " 终点: " + endLatlng ) ;
List locations = new ArrayList ( ) ;
locations . add ( startLatlng ) ;
locations . add ( addMiddleLoc ) ;
@@ -282,11 +315,14 @@ public class V2XWarningMarker implements IV2XMarker {
info . setLocations ( locations ) ;
info . setHeading ( bearing ) ;
info . setWidth ( mCloundWarningInfo . getRoadwidth ( ) * 14 + 5 ) ;
info . setDirection ( mCloundWarningInfo . getDirection ( ) ) ;
info . setHasStopLines ( mCloundWarningInfo . getStopLines ( ) . size ( ) > 0 ) ;
V2XServiceManager . getMoGoWarnPolylineManager ( ) . drawWarnPolyline ( getContext ( ) , info ) ;
Log . d ( TAG , " 自车前方第一条线 " + " 起点: " + startLatlng + " 中间点: " + addMiddleLoc + " 终点: " + endLatlng ) ;
}
Log . d ( TAG , " 自车为起点绘制 自车; " + startLatlng . lon + " , " + startLatlng . lat +
" 中间扩展点 " + addMiddleLoc . lon + " , " + addMiddleLoc . lat + " 终点: " + endLatlng . lon + " , " + endLatlng . lat ) ;
} else {
V2XServiceManager . getMoGoWarnPolylineManager ( ) . clearLine( ) ;
clearAll Line ( ) ;
}
}
}
@@ -307,23 +343,22 @@ public class V2XWarningMarker implements IV2XMarker {
polyLine . setPoints ( Arrays . asList ( startLatlng , addMiddleLoc , endLatlng ) ) ;
polyLine . setTransparency ( 0 . 5f ) ;
} else {
//识别物到预碰撞点之间的箭头
addArrows ( startLatlng , endLatlng ) ;
DrawLineInfo lineInfo = new DrawLineInfo ( ) ;
Log . d ( TAG , " 目标物与预碰撞点画线点为 " + " 起点: " + startLatlng + " 中间点: " + addMiddleLoc + " 终点: " + endLatlng ) ;
List locations = new ArrayList ( ) ;
locations . add ( startLatlng ) ;
locations . add ( addMiddleLoc ) ;
locations . add ( endLatlng ) ;
lineInfo . setLocations ( locations ) ;
lineInfo . setHeading ( info . heading ) ;
Log . d ( V2XConst . LOG_NAME_WARN , " drawOtherObjectLine width = " + info . getRoadwidth ( ) ) ;
lineInfo . setWidth ( info . getRoadwidth ( ) * 14 + 5 ) ;
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . drawPersonWarnPolyline ( getContext ( ) , lineInfo ) ;
//识别物到预碰撞点之间的箭头
addArrows ( startLatlng , endLatlng ) ;
Log . d ( TAG , " 目标物与预碰撞点画线点为 " + " 起点: " + startLatlng + " 中间点: " + addMiddleLoc + " 终点: " + endLatlng ) ;
}
} else {
Log . e ( V2XConst . LOG_NAME_WARN , " info == null " ) ;
V2XServiceManager . getMoGoPersonWarnPolylineManager ( ) . clearLine( ) ;
clearAll Line ( ) ;
}
}
@@ -338,51 +373,17 @@ public class V2XWarningMarker implements IV2XMarker {
for ( int i = 0 ; i < count ; i + + ) {
MogoLatLng newLo = Trigonometric . getNewLocation (
startLatLng , 5 * ( i + 1 ) , Trigonometric . getAngle ( startLatLng . lon , startLatLng . lat , endLatLng . lon , endLatLng . lat ) ) ;
Log . d ( TAG , " 小箭头位置 " + newLo ) ;
V2XWarnDataDrawer . getInstance ( ) . drawerArrowsMarkerWithLocation ( newLo , WARNING_ARROWS , 10 , new Double ( rotate ) . intValue ( ) ) ;
Log . d ( TAG , " 小箭头位置 " + newLo ) ;
}
}
//延迟3秒清理线
UiThreadHandler . postDelayed ( ( ) - > {
V2XServiceManager . getMarkerManager ( ) . removeMarkers ( WARNING_ARROWS ) ;
} , showTime ) ;
}
/*
* 2D资源绘制停止线 暂时不需要
* */
private void drawStopLineWith2Resource ( ) {
MogoLatLng carlo = mCloundWarningInfo . getCarLocation ( ) ;
if ( carlo = = null ) {
double lon = MogoApisHandler . getInstance ( ) . getApis ( ) . getAdasControllerApi ( ) . getLastLon ( ) ;
double lat = MogoApisHandler . getInstance ( ) . getApis ( ) . getAdasControllerApi ( ) . getLastLat ( ) ;
carlo = new MogoLatLng ( lat , lon ) ;
}
//自车行驶方向的前方*米的经纬度,该经纬度在停止线上
MogoLatLng drawStopLineLon = Trigonometric . getNewLocation ( carlo , mCloundWarningInfo . getStopLineDistance ( ) , mCloundWarningInfo . getAngle ( ) ) ;
Log . d ( TAG , " 2D资源绘 " + drawStopLineLon ) ;
MogoMarkerOptions optionsRipple = new MogoMarkerOptions ( )
. latitude ( drawStopLineLon . getLat ( ) )
. longitude ( drawStopLineLon . getLon ( ) )
. anchor ( 1 . 0f , 1 . 0f )
. zIndex ( MarkerDrawer . MARKER_Z_INDEX_HIGH ) ;
optionsRipple
. icon ( ViewUtils . fromView ( new EmptyMarkerView ( V2XServiceManager . getContext ( ) ) ) ) ;
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 ( ) ;
} , showTime ) ;
}
//线随车动
public void onCarLocationChanged2 ( Location latLng ) {
carLocation = new MogoLatLng ( latLng . getLatitude ( ) , latLng . getLongitude ( ) ) ;
if ( MogoApisHandler . getInstance ( ) . getApis ( ) . getStatusManagerApi ( ) . isVrMode ( ) & & isSelfLineClear = = false ) {
//当行人经纬度交点 开始画线,否则清理
if ( mCloundWarningInfo ! = null ) {
mCloundWarningInfo . setCarLocation ( new MogoLatLng ( latLng . getLatitude ( ) , latLng . getLongitude ( ) ) ) ;
}