diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 4ff10f68a5..83405b8de1 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -91,7 +91,6 @@
-
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java
index bce9c3fdc7..07dfb1fbb2 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/constants/DataTypes.java
@@ -18,6 +18,11 @@ class DataTypes {
*/
public static final String TYPE_MARKER_CLOUD_DATA = "TYPE_MARKER_CLOUD_DATA";
+ /**
+ * 云端下发数据
+ */
+ public static final String TYPE_MARKER_CLOUD_WARN_DATA = "TYPE_MARKER_CLOUD_WARN_DATA";
+
/**
* Push 事件场景 VR
*/
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
index 9834fa2002..305520801b 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
@@ -143,43 +143,39 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
* @param data 道路数据
* @return {@link IMogoMarker}
*/
-// public IMogoMarker drawWarnDataMarker( V2XWarningEntity data ) {
-// if ( data == null ) {
-// return null;
-// }
-//
-// MogoMarkerOptions options = new MogoMarkerOptions()
-// .owner( DataTypes.TYPE_MARKER_CLOUD_DATA )
-// .anchor( 0.5f, 0.5f )
-// .rotate( ( float ) data.getHeading() )
-// .object( data )
-// .gps( true )
-// .controlAngle( true )
-// .position( new MogoLatLng( data.getWgslat(), data.getWgslon() ) );
-// String resIdVal = null;
-// if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
-// options.set3DMode( true );
-// // TODO: 2021/3/23 后端算法提供显示颜色
-// options.anchorColor( getModelRenderColor( data.getType(), data.getSpeed(), data.getWgslon(), data.getWgslat(), data.getHeading() ) );
-// int resId = getModelRes( data.getType() );
-// resIdVal = resId + "";
+ public IMogoMarker drawWarnDataMarker( V2XWarningEntity data ) {
+ if ( data == null ) {
+ return null;
+ }
+
+ MogoMarkerOptions options = new MogoMarkerOptions()
+ .owner( DataTypes.TYPE_MARKER_CLOUD_DATA )
+ .anchor( 0.5f, 0.5f )
+ .rotate( ( float ) data.getHeading() )
+ .object( data )
+ .gps( true )
+ .controlAngle( true )
+ .position( new MogoLatLng( data.getLat(), data.getLon()));
+
+ String resIdVal = null;
+ if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ options.set3DMode( true );
+ options.anchorColor(data.color);
+ int resId = getModelRes( data.getType() );
+ resIdVal = resId + "";
// options.resName( mMarkerCachesResMd5Values.get( resIdVal ) );
-// options.icon3DRes( resId );
-// } else {
+ options.icon3DRes( resId );
+ } else {
// options.set3DMode( false );
// View view = inflateView( data );
// options.icon( view );
// resIdVal = view.getId() + "";
-// }
-// IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options );
+ }
+ IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options );
// cacheMarkerIconResMd5Val( resIdVal, marker );
-//
-// if ( !TextUtils.isEmpty( data.getSn() ) ) {
-// bindClickListener( marker );
-// }
-//
-// return marker;
-// }
+
+ return marker;
+ }
/**
@@ -187,17 +183,14 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
* @param data
*/
// public void renderWarnData(V2XWarningEntity data ) {
-//
// IMogoMarker marker = drawWarnDataMarker(data);
//
// if ( marker == null ) {
// continue;
// }
//
-//
// renderSnapshotOneFrame( marker, uniqueKey, cloudRoadData, newMarkersCaches );
//
-//
// }
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
index f6178c986d..2e3dd68156 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
@@ -303,7 +303,6 @@ public class V2XModuleProvider implements
V2XServiceManager.getV2XMarkerService().startAutoRefresh();
// 锁车就是将地图视图移植中心点,因为行驶中的车和地图要相对的跟随
V2XServiceManager.getMapUIController().recoverLockMode();
- Log.d(V2XConst.LOG_NAME_WARN, "V2XModuleProvider ------> ");
//注册adas数据通道
V2XWaringManager.getInstance().registerAdasSocketMessage(mContext);
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java
index 2dc4c068fe..d7247e54cc 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java
@@ -56,7 +56,7 @@ public class V2XWaringManager {
//根据云端,绘制自车和交点,以及行人或二轮车与交点的绘制
registerWarnListener();
- handleAdasData();
+// handleAdasData();
}
/**
@@ -92,26 +92,35 @@ public class V2XWaringManager {
/**
* 处理adas返回的数据
*/
- private void handleAdasData() {
- Log.d(V2XConst.LOG_NAME_WARN, "V2XWaringManager ---- handleAdasData ");
+ public void handleAdasData() {
+ Logger.d(V2XConst.LOG_NAME_WARN, "V2XWaringManager ---- handleAdasData ");
- // 绘制连接线 TODO 来的是列表数据
+ // 绘制连接线
DrawLineInfo info1 = new DrawLineInfo();
MogoLatLng startLatlng1 = new MogoLatLng(39.968919,116.407642);
MogoLatLng endLatlng1 = new MogoLatLng(40.010906,116.423821);
+ info1.setHeading(10);
info1.setStartLocation(startLatlng1);
info1.setEndLocation(endLatlng1);
+
+// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(116.411194781192,
+// 39.9808395231999, 10, true, true);
+// Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth);
+// info1.setWidth(roadWidth);
+// }
+
V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info1);
// adas 每隔一秒传递的他车或行人数据
V2XServiceManager.getmIMogoADASController().addAdasRecognizedDataCallback(resultList -> {
- // 绘制近景识别到的车辆,行人和二轮车 TODO
+ // 绘制近景识别到的车辆,行人和二轮车
AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( resultList );
//清理
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
- // 绘制连接线 TODO 来的是列表数据
+ // 绘制连接线
DrawLineInfo info = new DrawLineInfo();
MogoLatLng startLatlng = new MogoLatLng(39.969247,116.407299);
MogoLatLng endLatlng = new MogoLatLng(39.971089,116.407384);
@@ -133,15 +142,6 @@ public class V2XWaringManager {
double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat();
Log.d(V2XConst.LOG_NAME_WARN, "lon = " + lon + "----lat = " + lat);
- //绘制自车数据 liyz
-// DrawLineInfo info = new DrawLineInfo();
-// MogoLatLng startLatlng = new MogoLatLng(lat,lon); //我的位置
-// MogoLatLng endLatlng = new MogoLatLng(39.971089,); //交点位置
-// info.setStartLocation(startLatlng);
-// info.setEndLocation(endLatlng);
-// V2XServiceManager.getMoGoWarnPolylineManager().drawableWarnPolyline(mContext, info);
-
-
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java
index d18ba99ee7..e6a68b6331 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java
@@ -20,6 +20,8 @@ public class DrawLineInfo {
private double heading;
+ private float width;
+
public String getType() {
return type;
}
@@ -51,4 +53,12 @@ public class DrawLineInfo {
public void setHeading(double heading) {
this.heading = heading;
}
+
+ public float getWidth() {
+ return width;
+ }
+
+ public void setWidth(float width) {
+ this.width = width;
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java
index 19c96ecc65..43e5a4eb06 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java
@@ -25,6 +25,10 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan
@Override
public void drawPersonWarnPolyline(Context context, DrawLineInfo info) {
+ if (info == null) {
+ return;
+ }
+
try {
if (mMogoPolyline != null) {
mMogoPolyline.remove();
@@ -33,24 +37,26 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan
// 连接线参数
MogoPolylineOptions options = new MogoPolylineOptions();
- float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getStartLocation().lon,
- info.getStartLocation().lat, (float) info.getHeading(), true, true);
-
// 渐变色
List colors = new ArrayList<>();
- if (info.getType().equals("1")) { //预警 TODO
- colors.add(0xFFFFA31A);
- colors.add(0xFFFFA31A);
+ if (info.getType() != null) {
+ if (info.getType().equals("1")) { //预警 TODO
+ colors.add(0xFFFFA31A);
+ colors.add(0xFFFFA31A);
+ } else {
+ colors.add(0xFFE32F46);
+ colors.add(0xFFE32F46);
+ }
} else {
colors.add(0xFFE32F46);
colors.add(0xFFE32F46);
}
// 线条粗细,渐变,渐变色值
- Log.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager roadWidth = " + roadWidth);
- options.width(roadWidth).useGradient(true).colorValues(colors);
-// options.width(60).useGradient(true).colorValues(colors);
+// Logger.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager roadWidth = " + roadWidth);
+ options.width(60).useGradient(true).colorValues(colors);
+// options.width(info.getWidth()).useGradient(true).colorValues(colors);
// 当前车辆位置
options.add(info.getStartLocation());
// 目标车辆位置
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
index 420e8da55e..ebd2cbacb5 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java
@@ -8,6 +8,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.map.MogoLatLng;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.overlay.IMogoPolyline;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.drawer.SnapshotSetDataDrawer;
import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.v2x.MoGoV2XServicePaths;
@@ -29,7 +30,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
@Override
public void init(Context context) {
-
}
@Override
@@ -42,7 +42,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
drawOtherObjectLine(cloundWarningInfo);
//二轮车和行人的移动和渲染
-// SnapshotSetDataDrawer.getInstance().renderSnapshotData();
+// SnapshotSetDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
}
@@ -64,6 +64,14 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
lineInfo.setStartLocation(startLatlng);
lineInfo.setEndLocation(endLatlng);
lineInfo.setHeading(info.heading);
+ if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(116.411194781192,
+// 39.9808395231999, 10, true, true);
+ float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getLon(),
+ info.getLat(), (float) info.heading, true, true);
+ Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth);
+ lineInfo.setWidth(roadWidth);
+ }
V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo);
}
} else {
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java
index 07cf944aee..9752a13441 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java
@@ -38,12 +38,11 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager {
mMogoPolyline.remove();
}
+ Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager --------> ");
+
// 连接线参数
MogoPolylineOptions options = new MogoPolylineOptions();
-// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getStartLocation().lon,
-// info.getStartLocation().lat, (float) info.getHeading(), true, true);
-
List colors = new ArrayList<>();
if (info.getType() != null) {
@@ -63,7 +62,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager {
// Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + roadWidth);
// 线条粗细,渐变,渐变色值
options.width(60).useGradient(true).colorValues(colors);
-// options.width(roadWidth).useGradient(true).colorValues(colors);
+// options.width(info.getWidth()).useGradient(true).colorValues(colors);
// 当前车辆位置
options.add(info.getStartLocation());
// 目标车辆位置
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
index 62905c22a0..2939319bae 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
@@ -23,7 +23,10 @@ public class AdasDataBroadcastReceiver extends BroadcastReceiver {
// Logger.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -->" + GsonUtil.jsonFromObject(adasResult));
String adasResult = (String) intent.getSerializableExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY);
Log.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -----> ");
- V2XWaringManager.getInstance().registerAdasSocketMessage(context);
+// V2XWaringManager.getInstance().registerAdasSocketMessage(context);
+ V2XWaringManager.getInstance().handleAdasData();
+
+
} catch (Exception e) {
e.printStackTrace();
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java
index f365363897..f2492e97ba 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java
@@ -1,6 +1,7 @@
package com.mogo.module.v2x.scenario.scene.warning;
import android.content.Context;
+
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
@@ -16,6 +17,10 @@ import com.mogo.module.v2x.entity.model.DrawLineInfo;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.utils.WorkThreadHandler;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Handler;
+
/**
* @author liujing
* @description 描述
@@ -40,23 +45,14 @@ public class V2XWarningMarker implements IV2XMarker {
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
clearPOI();
WorkThreadHandler.getInstance().postDelayed(() -> {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .object(markerShowEntity)
- .latitude(markerShowEntity.getMarkerLocation().getLat())
- .longitude(markerShowEntity.getMarkerLocation().getLon());
- IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options);
- options.icon3DRes(com.mogo.module.service.R.raw.people);
- options.anchorColor("#FF4040");
- IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
- iMarkerView.setMarker(marker);
- marker.setToTop();
+ IMogoMarker marker = drawMarker(markerShowEntity);
+ //如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画
+ if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) {
+ drawLine();
+ smooth(marker);
+ }
}, 0);
- //如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画
- if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) {
- drawLine();
- smooth();
- }
} else {
}
@@ -66,6 +62,20 @@ public class V2XWarningMarker implements IV2XMarker {
}
+ public IMogoMarker drawMarker(MarkerShowEntity markerShowEntity) {
+ MogoMarkerOptions options = new MogoMarkerOptions()
+ .object(markerShowEntity)
+ .latitude(markerShowEntity.getMarkerLocation().getLat())
+ .longitude(markerShowEntity.getMarkerLocation().getLon());
+ IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options);
+ options.icon3DRes(com.mogo.module.service.R.raw.people);
+ options.anchorColor("#FF4040");
+ IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
+ iMarkerView.setMarker(marker);
+ marker.setToTop();
+ return marker;
+ }
+
public void drawLine() {
DrawLineInfo drawLineInfo = new DrawLineInfo();
MogoLatLng slatLng = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon());
@@ -75,12 +85,25 @@ public class V2XWarningMarker implements IV2XMarker {
V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo);
}
- public void smooth() {
+ public void smooth(IMogoMarker marker) {
+ List latLngs = new ArrayList<>();
+ MogoLatLng sLocation = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon());
+ MogoLatLng endLocation = new MogoLatLng(mMarkerEntity.getCollisionLat(), mMarkerEntity.getCollisionLon());
+ latLngs.add(sLocation);
+ latLngs.add(endLocation);
+ marker.startSmoothInMs(latLngs, 3000);
+ WorkThreadHandler.getInstance().postDelayed(() -> {
+ clearLine();
+ }, 3_000);
}
@Override
public void clearPOI() {
V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_WARNING_MARKER);
}
+
+ public void clearLine() {
+ V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
index d514923ffe..d04415ae80 100644
--- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
+++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json
@@ -3,16 +3,16 @@
"lat":39.977148,
"lon":116.417478,
"distance": 2.22,
- "collisionLat": 39.977131,
- "collisionLon": 116.417741,
+ "collisionLat": 39.977094,
+ "collisionLon": 116.417634,
"from": 1,
"angle": 120,
"direction": 10014,
"speed":11.108121,
"targetColor": "#FF4040",
"stopLineDistance":20,
- "stopLineLat": 39.977123,
- "stopLineLon": 116.417537,
+ "stopLineLat": 39.977094,
+ "stopLineLon": 116.417634,
"warningContent": "小心行人",
"heading": 30
}
\ No newline at end of file