@@ -12,6 +12,8 @@ import android.location.Location;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.map.location.MogoLocation;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
@@ -129,12 +131,12 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<DispatchAdas
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyAutopilotState(AutopilotStatus autopilotStatus) {
|
||||
public void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
|
||||
AdasServiceModel.getInstance().uploadAutopilotStatus(autopilotStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autopilotRoute(AutopilotRoute autopilotRoute) {
|
||||
public void autopilotRoute(AutopilotRouteInfo autopilotRoute) {
|
||||
// if (autopilotRoute == null || autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
|
||||
// return;
|
||||
// }
|
||||
@@ -226,12 +228,10 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<DispatchAdas
|
||||
}
|
||||
|
||||
public void testNotifyAutopilotState() {
|
||||
AutopilotStatus autopilotStatus = new AutopilotStatus();
|
||||
AutopilotStatus.ValuesBean valuesBean = new AutopilotStatus.ValuesBean();
|
||||
valuesBean.setReason("123");
|
||||
valuesBean.setSpeed(123);
|
||||
valuesBean.setState(0);
|
||||
autopilotStatus.setValues(valuesBean);
|
||||
AutopilotStatusInfo autopilotStatus = new AutopilotStatusInfo();
|
||||
autopilotStatus.setReason("123");
|
||||
autopilotStatus.setSpeed(123);
|
||||
autopilotStatus.setState(0);
|
||||
AdasServiceModel.getInstance().uploadAutopilotStatus(autopilotStatus);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,29 +1,28 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.mogo.eagle.core.data.autopilot.AutoPilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
|
||||
import com.mogo.eagle.core.data.traffic.TrafficData;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.module.adas.model.AdasServiceModel;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.utils.GsonUtil;
|
||||
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
|
||||
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
|
||||
import com.zhidao.support.adas.high.AdasManager;
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.OnAdasMsgConnectStatusListener;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
|
||||
import com.zhidao.support.adas.high.bean.CarLaneInfo;
|
||||
import com.zhidao.support.adas.high.bean.CarStateInfo;
|
||||
import com.zhidao.support.adas.high.bean.LightStatueInfo;
|
||||
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
|
||||
import com.zhidao.support.obu.ami.AmiClientManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Flowable;
|
||||
@@ -33,7 +32,7 @@ import io.reactivex.schedulers.Schedulers;
|
||||
/**
|
||||
* Created by XuYong on 2021/4/25 14:43
|
||||
*/
|
||||
public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener {
|
||||
public class AdasEventManager implements OnAdasMsgConnectStatusListener, IMoGoAutopilotStatusListener {
|
||||
|
||||
private final String TAG = "AdasEventManager";
|
||||
|
||||
@@ -48,12 +47,13 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
//自动驾驶车速度
|
||||
private float mCurrentAutopilotSpeed = 0;
|
||||
//自动驾驶状态
|
||||
private AutopilotStatus.ValuesBean mAutopilotValuesStatus = null;
|
||||
private AutopilotStatusInfo mAutopilotValuesStatus = null;
|
||||
|
||||
private IAdasProviderBizListener providerBizListener;
|
||||
|
||||
private AdasEventManager() {
|
||||
gson = GsonUtil.getGson();
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
|
||||
}
|
||||
|
||||
public static AdasEventManager getInstance() {
|
||||
@@ -98,157 +98,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
iAdasStatusListeners.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
|
||||
Logger.d(TAG, "onWarnMessage " + warnMessageInfo);
|
||||
//报警model
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onWarnMessage(warnMessageInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoSize(int width, int height) {
|
||||
Logger.d(TAG, "onVideoSize");
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRectData(RectInfo rectInfo) {
|
||||
Logger.d(TAG, "onRectData " + rectInfo);
|
||||
try {
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onRectData(rectInfo);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarStateData(CarStateInfo carStateInfo) {
|
||||
//Logger.d(TAG, "onCarStateData " + carStateInfo);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.ownerCarStateInfo(gson.toJson(carStateInfo));
|
||||
}
|
||||
}
|
||||
|
||||
//can数据转发
|
||||
CarStateInfo.ValuesBean bean = carStateInfo.getValues();
|
||||
if (bean != null) {
|
||||
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
|
||||
AmiClientManager.getInstance().setTurnLightState(turn_light);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLightStateData(LightStatueInfo lightStatueInfo) {
|
||||
Logger.d(TAG, "onLightStateData " + lightStatueInfo);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) {
|
||||
Logger.d(TAG, "onObstaclesInfo " + obstaclesInfo);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLaneInfo(CarLaneInfo carLaneInfo) {
|
||||
Logger.d(TAG, "onCarLaneInfo " + carLaneInfo);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autopilotStatus(AutopilotStatus autopilotStatus) {
|
||||
Logger.d(TAG, "autopilotStatus " + autopilotStatus);
|
||||
AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues();
|
||||
if (autopilotStatusValues != null) {
|
||||
// 初始化自动驾驶状态信息
|
||||
AutoPilotStatusInfo autopilotStatusInfo = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo();
|
||||
autopilotStatusInfo.setAutopilotStatus(autopilotStatusValues.getState());
|
||||
autopilotStatusInfo.setAutoDriveStatus(autopilotStatusValues.getPilotmode());
|
||||
autopilotStatusInfo.setErrorReason(autopilotStatusValues.getReason());
|
||||
autopilotStatusInfo.setCamera(autopilotStatusValues.getCamera());
|
||||
autopilotStatusInfo.setRtk(autopilotStatusValues.getRtk());
|
||||
autopilotStatusInfo.setRadar(autopilotStatusValues.getRadar());
|
||||
autopilotStatusInfo.setSpeed(autopilotStatusValues.getSpeed());
|
||||
// 初始化自动驾驶状态信息
|
||||
autopilotStatusInfo.setVersion(AdasManager.getInstance().getAdasConfig().getVersion());
|
||||
autopilotStatusInfo.setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
|
||||
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
|
||||
|
||||
int state = autopilotStatusValues.getState();
|
||||
float speed = autopilotStatusValues.getSpeed();
|
||||
mCurrentAutopilotStatus = state;
|
||||
mCurrentAutopilotSpeed = speed;
|
||||
this.mAutopilotValuesStatus = autopilotStatus.getValues();
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.notifyAutopilotState(autopilotStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) {
|
||||
Logger.d(TAG, "autopilotArrive " + autopilotWayArrive);
|
||||
if (autopilotWayArrive != null) {
|
||||
AutopilotWayArrive.ResultBean result = autopilotWayArrive.getResult();
|
||||
if (result != null) {
|
||||
AutopilotWayArrive.ResultBean.EndLatLonBean endLatLon = result.getEndLatLon();
|
||||
if (endLatLon != null) {
|
||||
AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel();
|
||||
adasAIDLAutopilotArriveModel.setCarType(result.getCarType());
|
||||
double lon = endLatLon.getLon();
|
||||
double lat = endLatLon.getLat();
|
||||
adasAIDLAutopilotArriveModel.setLat(lat);
|
||||
adasAIDLAutopilotArriveModel.setLon(lon);
|
||||
Logger.d(TAG, "autopilotArrive reportSite");
|
||||
reportSite(lon, lat);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.autopilotArrive(adasAIDLAutopilotArriveModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotRoute(AutopilotRoute autopilotRoute) {
|
||||
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
|
||||
Logger.d(TAG, "onAutopilotRoute is null !");
|
||||
return;
|
||||
}
|
||||
Logger.d(TAG, "onAutopilotRoute : " + autopilotRoute.toString());
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.autopilotRoute(autopilotRoute);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotSNRequest() {
|
||||
@@ -259,11 +108,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWebSocketConnectSuccess() {
|
||||
Logger.d(TAG, "webSocket 连接成功");
|
||||
@@ -271,7 +115,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectStatus(true);
|
||||
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
|
||||
for (IAdasStatusListener listener : iAdasStatusListeners) {
|
||||
listener.onServiceConnected();
|
||||
}
|
||||
@@ -283,7 +127,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
Logger.d(TAG, "webSocket 连接失败 reason:" + reason);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().setConnectStatus(false);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatusListener();
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
|
||||
for (IAdasStatusListener listener : iAdasStatusListeners) {
|
||||
listener.onServiceDisconnected();
|
||||
}
|
||||
@@ -319,4 +163,96 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
|
||||
public void setProviderBizListener(IAdasProviderBizListener listener) {
|
||||
providerBizListener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
|
||||
Logger.d(TAG, "autopilotStatus " + autoPilotStatusInfo);
|
||||
int state = autoPilotStatusInfo.getState();
|
||||
float speed = autoPilotStatusInfo.getSpeed();
|
||||
mCurrentAutopilotStatus = state;
|
||||
mCurrentAutopilotSpeed = speed;
|
||||
this.mAutopilotValuesStatus = autoPilotStatusInfo;
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.notifyAutopilotState(autoPilotStatusInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(AutopilotStationInfo autopilotWayArrive) {
|
||||
Logger.d(TAG, "autopilotArrive " + autopilotWayArrive);
|
||||
if (autopilotWayArrive != null) {
|
||||
double lon = autopilotWayArrive.getLon();
|
||||
double lat = autopilotWayArrive.getLat();
|
||||
Logger.d(TAG, "autopilotArrive reportSite");
|
||||
reportSite(lon, lat);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.autopilotArrive(autopilotWayArrive);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotCarStateData(@Nullable AutopilotCarStateInfo autoPilotCarStateInfo) {
|
||||
Logger.d(TAG, "onCarStateData " + autoPilotCarStateInfo);
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.ownerCarStateInfo(gson.toJson(autoPilotCarStateInfo));
|
||||
}
|
||||
}
|
||||
|
||||
//can数据转发
|
||||
AutopilotCarStateInfo.ValuesBean bean = autoPilotCarStateInfo.getValues();
|
||||
if (bean != null) {
|
||||
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
|
||||
AmiClientManager.getInstance().setTurnLightState(turn_light);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotRoute(@Nullable AutopilotRouteInfo autopilotRoute) {
|
||||
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
|
||||
Logger.d(TAG, "onAutopilotRoute is null !");
|
||||
return;
|
||||
}
|
||||
Logger.d(TAG, "onAutopilotRoute : " + autopilotRoute.toString());
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.autopilotRoute(autopilotRoute);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(@Nullable AutopilotGuardianStatusInfo guardianInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotIdentifyDataUpdate(@Nullable List<TrafficData> trafficData) {
|
||||
Logger.d(TAG, "onRectData " + trafficData);
|
||||
try {
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onRectData(trafficData);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotWarnMessage(@Nullable AutopilotWarnMessage autopilotWarnMessage) {
|
||||
Logger.d(TAG, "onWarnMessage " + autopilotWarnMessage);
|
||||
//报警model
|
||||
for (IAdasDataListener listener : iAdasEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onWarnMessage(autopilotWarnMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.mogo.module.adas
|
||||
|
||||
import android.util.Log
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo
|
||||
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
|
||||
import com.mogo.eagle.core.data.traffic.TrafficData
|
||||
import com.mogo.utils.network.utils.GsonUtil
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute
|
||||
import com.zhidao.support.adas.high.bean.CarStateInfo
|
||||
import com.zhidao.support.adas.high.bean.RectInfo.RectBean
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo
|
||||
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020/10/25
|
||||
*
|
||||
* 对象转换类
|
||||
*/
|
||||
object AdasObjectUtils {
|
||||
|
||||
fun fromAutopilotGuardianInfo(autopilotGuardianInfo: AutopilotGuardianInfo): AutopilotGuardianStatusInfo? {
|
||||
return GsonUtil.objectFromJson(
|
||||
GsonUtil.jsonFromObject(autopilotGuardianInfo),
|
||||
AutopilotGuardianStatusInfo::class.java
|
||||
)
|
||||
}
|
||||
|
||||
fun fromAdasAutopilotRoute(carStateInfo: AutopilotRoute): AutopilotRouteInfo? {
|
||||
return GsonUtil.objectFromJson(
|
||||
GsonUtil.jsonFromObject(carStateInfo),
|
||||
AutopilotRouteInfo::class.java
|
||||
)
|
||||
}
|
||||
|
||||
fun fromAdasCarStateInfoObject(carStateInfo: CarStateInfo): AutopilotCarStateInfo? {
|
||||
return GsonUtil.objectFromJson(
|
||||
GsonUtil.jsonFromObject(carStateInfo),
|
||||
AutopilotCarStateInfo::class.java
|
||||
)
|
||||
}
|
||||
|
||||
fun fromAdasObject(info: WarnMessageInfo?): AutopilotWarnMessage? {
|
||||
if (info == null) {
|
||||
return null
|
||||
}
|
||||
val warnMessage =
|
||||
AutopilotWarnMessage()
|
||||
warnMessage.content = info.content
|
||||
warnMessage.level = info.level
|
||||
try {
|
||||
warnMessage.type = info.type.toInt()
|
||||
} catch (e: NumberFormatException) {
|
||||
return null
|
||||
}
|
||||
warnMessage.value = info.value
|
||||
return warnMessage
|
||||
}
|
||||
|
||||
fun regroupTrafficDataData(datums: List<RectBean?>?): List<TrafficData>? {
|
||||
if (datums == null || datums.isEmpty()) {
|
||||
return null
|
||||
}
|
||||
val recognizedListResults: MutableList<TrafficData> = ArrayList()
|
||||
for (model in datums) {
|
||||
if (model == null) {
|
||||
continue
|
||||
}
|
||||
val recognizedListResult = fromAdasTrafficDataObject(model)
|
||||
if (recognizedListResult != null) {
|
||||
recognizedListResults.add(recognizedListResult)
|
||||
}
|
||||
}
|
||||
return recognizedListResults
|
||||
}
|
||||
|
||||
fun fromAdasTrafficDataObject(model: RectBean?): TrafficData? {
|
||||
if (model == null) {
|
||||
return null
|
||||
}
|
||||
val start = System.nanoTime()
|
||||
val result = TrafficData()
|
||||
result.uuid = model.uuid
|
||||
result.lat = model.lat
|
||||
result.lon = model.lon
|
||||
result.type = TrafficTypeEnum.getType(model.type.toInt())
|
||||
result.heading = model.heading
|
||||
result.systemTime = model.systemTime.toLong()
|
||||
result.satelliteTime = model.satelliteTime.toLong()
|
||||
result.alt = model.alt
|
||||
result.speed = model.speed
|
||||
result.carId = model.carId
|
||||
result.dataAccuracy = model.dataAccuracy
|
||||
result.distance = model.distance
|
||||
result.threatLevel = model.drawlevel
|
||||
Log.d(
|
||||
"ADAS数据延时", "fromAdasObject cost : " + TimeUnit.NANOSECONDS.toMillis(
|
||||
System.nanoTime() - start
|
||||
)
|
||||
)
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -9,7 +9,9 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
|
||||
import com.zhidao.support.adas.high.AdasManager;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.BasicInfo;
|
||||
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
|
||||
|
||||
|
||||
/**
|
||||
@@ -45,7 +47,7 @@ public class AdasProvider implements IProvider {
|
||||
|
||||
private void initAdas(Context context, AdasEventManager adasEventManager) {
|
||||
AdasManager.getInstance().create(context);
|
||||
AdasManager.getInstance().setOnAdasListener(adasEventManager);
|
||||
AdasManager.getInstance().setOnAdasListener(new OnAdasListenerAdapter());
|
||||
AdasManager.getInstance().setOnAdasConnectStatusListener(adasEventManager);
|
||||
adasEventManager.setProviderBizListener(this::setBasicInfo);
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
/**
|
||||
* Created by XuYong on 2021/5/28 16:12
|
||||
*/
|
||||
public class AutonomousDriveStatusBean {
|
||||
|
||||
private String sn;
|
||||
private int status;
|
||||
private float vehicleSpeed;
|
||||
|
||||
public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) {
|
||||
this.sn = sn;
|
||||
this.status = status;
|
||||
this.vehicleSpeed = vehicleSpeed;
|
||||
}
|
||||
|
||||
public String getSn() {
|
||||
return sn;
|
||||
}
|
||||
|
||||
public void setSn(String sn) {
|
||||
this.sn = sn;
|
||||
}
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public float getVehicleSpeed() {
|
||||
return vehicleSpeed;
|
||||
}
|
||||
|
||||
public void setVehicleSpeed(float vehicleSpeed) {
|
||||
this.vehicleSpeed = vehicleSpeed;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,18 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
|
||||
import com.mogo.eagle.core.data.traffic.TrafficData;
|
||||
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public interface IAdasDataListener {
|
||||
|
||||
@@ -13,11 +20,11 @@ public interface IAdasDataListener {
|
||||
|
||||
}
|
||||
|
||||
default void onRectData(RectInfo rectInfo) {
|
||||
default void onRectData(List<TrafficData> trafficData) {
|
||||
|
||||
}
|
||||
|
||||
default void onWarnMessage(WarnMessageInfo warnMessageInfo) {
|
||||
default void onWarnMessage(AutopilotWarnMessage autopilotWarnMessage) {
|
||||
|
||||
}
|
||||
|
||||
@@ -25,17 +32,17 @@ public interface IAdasDataListener {
|
||||
/**
|
||||
* 自动驾驶到达站点回调接口
|
||||
*
|
||||
* @param autopilotArriveModel
|
||||
* @param autopilotWayArrive
|
||||
*/
|
||||
default void autopilotArrive(AdasAIDLAutopilotArriveModel autopilotArriveModel) {
|
||||
default void autopilotArrive(AutopilotStationInfo autopilotWayArrive) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动驾驶路线回调
|
||||
*
|
||||
* @param autopilotRoute {@link AutopilotRoute}
|
||||
* @param autopilotRoute {@link AutopilotRouteInfo}
|
||||
*/
|
||||
default void autopilotRoute(AutopilotRoute autopilotRoute) {
|
||||
default void autopilotRoute(AutopilotRouteInfo autopilotRoute) {
|
||||
|
||||
}
|
||||
|
||||
@@ -50,9 +57,9 @@ public interface IAdasDataListener {
|
||||
/**
|
||||
* 自动驾驶状态信息
|
||||
*
|
||||
* @param autopilotStatus {@link AutopilotStatus}
|
||||
* @param autopilotStatus {@link AutopilotStatusInfo}
|
||||
*/
|
||||
default void notifyAutopilotState(AutopilotStatus autopilotStatus) {
|
||||
default void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage;
|
||||
import com.mogo.eagle.core.data.traffic.TrafficData;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.zhidao.support.adas.high.AdasManager;
|
||||
import com.zhidao.support.adas.high.OnAdasListener;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotRoute;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
|
||||
import com.zhidao.support.adas.high.bean.CarLaneInfo;
|
||||
import com.zhidao.support.adas.high.bean.CarStateInfo;
|
||||
import com.zhidao.support.adas.high.bean.LightStatueInfo;
|
||||
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
|
||||
import com.zhidao.support.adas.high.bean.RectInfo;
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo;
|
||||
import com.zhidao.support.obu.ami.AmiClientManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020/10/22
|
||||
* <p>
|
||||
* 适配ADAS 回调监听分发
|
||||
*/
|
||||
public class OnAdasListenerAdapter implements OnAdasListener {
|
||||
private final String TAG = "OnAdasListenerAdapter";
|
||||
|
||||
@Override
|
||||
public void onRectData(RectInfo rectInfo) {
|
||||
List<TrafficData> recognizedListResults = AdasObjectUtils.INSTANCE.regroupTrafficDataData(rectInfo.getModels());
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeIdentifyDataUpdate(recognizedListResults);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarStateData(CarStateInfo carStateInfo) {
|
||||
AutopilotCarStateInfo autopilotCarStateInfo = AdasObjectUtils.INSTANCE.fromAdasCarStateInfoObject(carStateInfo);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotCarStateData(autopilotCarStateInfo);
|
||||
|
||||
//can数据转发
|
||||
CarStateInfo.ValuesBean bean = carStateInfo.getValues();
|
||||
if (bean != null) {
|
||||
int turn_light = bean.getTurn_light(); //转向灯状态 0是正常 1是左转 2是右转
|
||||
AmiClientManager.getInstance().setTurnLightState(turn_light);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autopilotStatus(AutopilotStatus autopilotStatus) {
|
||||
AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues();
|
||||
|
||||
if (autopilotStatusValues != null) {
|
||||
// 初始化自动驾驶状态信息
|
||||
AutopilotStatusInfo autopilotStatusInfo = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo();
|
||||
autopilotStatusInfo.setState(autopilotStatusValues.getState());
|
||||
autopilotStatusInfo.setPilotmode(autopilotStatusValues.getPilotmode());
|
||||
autopilotStatusInfo.setReason(autopilotStatusValues.getReason());
|
||||
autopilotStatusInfo.setCamera(autopilotStatusValues.getCamera());
|
||||
autopilotStatusInfo.setRtk(autopilotStatusValues.getRtk());
|
||||
autopilotStatusInfo.setRadar(autopilotStatusValues.getRadar());
|
||||
autopilotStatusInfo.setSpeed(autopilotStatusValues.getSpeed());
|
||||
// 初始化自动驾驶状态信息
|
||||
autopilotStatusInfo.setVersion(AdasManager.getInstance().getAdasConfig().getVersion());
|
||||
autopilotStatusInfo.setConnectIP(AdasManager.getInstance().getAdasConfig().getAddress());
|
||||
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutoPilotStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) {
|
||||
if (autopilotWayArrive != null) {
|
||||
AutopilotWayArrive.ResultBean result = autopilotWayArrive.getResult();
|
||||
if (result != null) {
|
||||
AutopilotWayArrive.ResultBean.EndLatLonBean endLatLon = result.getEndLatLon();
|
||||
if (endLatLon != null) {
|
||||
AutopilotStationInfo stationInfo = new AutopilotStationInfo(result.getCarType(), endLatLon.getLon(), endLatLon.getLat());
|
||||
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeArriveAtStation(stationInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotRoute(AutopilotRoute route) {
|
||||
Logger.d(TAG, "onAutopilotRoute : " + route.toString());
|
||||
AutopilotRouteInfo autopilotRoute = AdasObjectUtils.INSTANCE.fromAdasAutopilotRoute(route);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotRoute(autopilotRoute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotSNRequest() {
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotSNRequest();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) {
|
||||
AutopilotGuardianStatusInfo autopilotRoute = AdasObjectUtils.INSTANCE.fromAutopilotGuardianInfo(guardianInfo);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotGuardian(autopilotRoute);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLightStateData(LightStatueInfo lightStatueInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLaneInfo(CarLaneInfo carLaneInfo) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
|
||||
final AutopilotWarnMessage warnMessage = AdasObjectUtils.INSTANCE.fromAdasObject(warnMessageInfo);
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.invokeAutopilotWarnMessage(warnMessage);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoSize(int width, int height) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.mogo.module.adas;
|
||||
|
||||
/**
|
||||
* Created by XuYong on 2021/5/31 16:24
|
||||
*/
|
||||
public class ReportSiteBean {
|
||||
private String sn;
|
||||
private double lon;
|
||||
private double lat;
|
||||
|
||||
public ReportSiteBean(String sn, double lon, double lat) {
|
||||
this.sn = sn;
|
||||
this.lon = lon;
|
||||
this.lat = lat;
|
||||
}
|
||||
|
||||
public String getSn() {
|
||||
return sn;
|
||||
}
|
||||
|
||||
public void setSn(String sn) {
|
||||
this.sn = sn;
|
||||
}
|
||||
|
||||
public double getLon() {
|
||||
return lon;
|
||||
}
|
||||
|
||||
public void setLon(double lon) {
|
||||
this.lon = lon;
|
||||
}
|
||||
|
||||
public double getLat() {
|
||||
return lat;
|
||||
}
|
||||
|
||||
public void setLat(double lat) {
|
||||
this.lat = lat;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
package com.mogo.module.adas.entity;
|
||||
|
||||
|
||||
import com.zhidao.support.adas.high.bean.AutopilotStatus;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
|
||||
/**
|
||||
* 上报自动驾驶规划的路径
|
||||
*/
|
||||
public class ReportedRoute {
|
||||
private String sn;
|
||||
private AutopilotStatus.ValuesBean bean;
|
||||
private AutopilotStatusInfo bean;
|
||||
private String siteList;
|
||||
|
||||
public ReportedRoute(String sn, AutopilotStatus.ValuesBean bean) {
|
||||
public ReportedRoute(String sn, AutopilotStatusInfo bean) {
|
||||
this.sn = sn;
|
||||
this.bean = bean;
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
package com.mogo.module.adas.entity;
|
||||
|
||||
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
|
||||
|
||||
/**
|
||||
* @author nie yunlong
|
||||
* @des
|
||||
* @date 2020/10/22
|
||||
*/
|
||||
public class WarnMessageModel {
|
||||
|
||||
private String action;
|
||||
|
||||
private WarnMessageInfo values;
|
||||
|
||||
public String getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
public void setAction(String action) {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public WarnMessageInfo getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void setValues(WarnMessageInfo values) {
|
||||
this.values = values;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mogo.module.adas.model;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.data.BaseData;
|
||||
import com.mogo.commons.network.SubscribeImpl;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.module.adas.entity.AutonomousDriveStatusBean;
|
||||
import com.mogo.module.adas.entity.ReportDispatchResult;
|
||||
import com.mogo.module.adas.entity.ReportSiteBean;
|
||||
@@ -59,9 +60,9 @@ public class AdasServiceModel {
|
||||
*
|
||||
* @param autopilotStatus {@link AutopilotStatus}
|
||||
*/
|
||||
public void uploadAutopilotStatus(AutopilotStatus autopilotStatus) {
|
||||
public void uploadAutopilotStatus(AutopilotStatusInfo autopilotStatus) {
|
||||
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
|
||||
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus.getValues());
|
||||
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus);
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("sn", sn);
|
||||
map.put("data", GsonUtil.jsonFromObject(reportedRoute));
|
||||
|
||||
@@ -1,216 +0,0 @@
|
||||
原数据
|
||||
26.820175208327566,112.57748204198309
|
||||
26.82009891465042,112.57735739748664
|
||||
26.820022750763542,112.57723266155585
|
||||
26.81994655656347,112.57710795477944
|
||||
26.81987031666393,112.57698328267305
|
||||
26.819793988171348,112.57685866945901
|
||||
26.819717530408877,112.57673414980971
|
||||
26.819635079638967,112.57661462149986
|
||||
26.819532022659132,112.5765234581422
|
||||
26.819488197195188,112.5764835085963
|
||||
26.81947053563866,112.57645743645142
|
||||
26.81945285740347,112.5764313389555
|
||||
26.81941584428336,112.57637074918446
|
||||
26.819355855639404,112.57626774620917
|
||||
26.8193352833325,112.57623094969783
|
||||
26.819315738575742,112.57619587959701
|
||||
26.81929619389902,112.5761608096667
|
||||
26.819276064037396,112.5761245744324
|
||||
26.819221654527443,112.5760208132482
|
||||
26.819153675938914,112.5758903945585
|
||||
26.8190859083974,112.57576035026403
|
||||
26.81904791926707,112.57568644394968
|
||||
26.819047477540156,112.57568591545105
|
||||
26.819047035811135,112.57568538694994
|
||||
26.819046594080046,112.57568485844635
|
||||
26.81902999052958,112.57568137976324
|
||||
26.818966668056316,112.57572279587626
|
||||
26.81896660310204,112.57572518130716
|
||||
26.81896683258833,112.57572606581252
|
||||
26.81896706207354,112.57572695031374
|
||||
26.818971211272444,112.57573544393973
|
||||
26.819027657144368,112.57584589447032
|
||||
26.819095546341085,112.57597644303986
|
||||
26.8191650468231,112.57610591408428
|
||||
26.819236806047,112.5762338575302
|
||||
26.819310184480436,112.57636063880027
|
||||
26.819384451187933,112.5764867800095
|
||||
26.819460642360763,112.57661149583805
|
||||
26.819536878267925,112.57673619431976
|
||||
26.819613220428206,112.57686079387894
|
||||
26.819689146973122,112.57698570087358
|
||||
26.819765257290772,112.57711047564952
|
||||
26.81984156841068,112.57723510283108
|
||||
26.819916608456698,112.57735767331373
|
||||
26.819990868286688,112.57747918205983
|
||||
26.82006704845146,112.57760363217366
|
||||
26.820142688927376,112.57772676391022
|
||||
26.820220480866162,112.57784947830805
|
||||
26.82029609426984,112.57797111160743
|
||||
26.820372540342063,112.57809575812311
|
||||
26.820449035279513,112.57822036992494
|
||||
26.82052479395364,112.5783432083879
|
||||
26.820600741070034,112.57846626552721
|
||||
26.820676451505513,112.57858892597905
|
||||
26.820750627333855,112.57870908764811
|
||||
26.820788099971104,112.57876896886103
|
||||
26.82079340880141,112.57877600898784
|
||||
26.82079871765643,112.57878304914836
|
||||
26.820804096213536,112.57879017489086
|
||||
26.820866626548845,112.5788587003478
|
||||
26.820983640738305,112.57893123552938
|
||||
26.82111632395692,112.57893777257203
|
||||
26.82117204164965,112.57891747212024
|
||||
26.821184743761496,112.57890962148315
|
||||
26.821197445813166,112.57890177088103
|
||||
26.821210607045213,112.57889357476125
|
||||
26.821290516628242,112.57883467623317
|
||||
26.82140278979742,112.57875048180252
|
||||
26.821515292745254,112.57866667791178
|
||||
26.821628395747688,112.5785838835907
|
||||
26.82174189376551,112.57850175198458
|
||||
26.82185566968843,112.57842010282002
|
||||
26.82196987298559,112.57833919555353
|
||||
26.822083935682734,112.5782580474171
|
||||
26.822198178890964,112.57817722472228
|
||||
26.82231299206679,112.5780973993899
|
||||
26.822427661696032,112.57801732090307
|
||||
26.82254293064344,112.57793832470455
|
||||
26.822658717481524,112.57786026718888
|
||||
26.822774624402133,112.57778243034805
|
||||
26.82289066838358,112.57770484656757
|
||||
26.823007036027615,112.57762787191734
|
||||
26.823123797760537,112.57755163699323
|
||||
26.82324089700492,112.57747604255579
|
||||
26.823355874237176,112.57740187937155
|
||||
26.823470001455,112.57732986163221
|
||||
26.82358841433288,112.57725688653507
|
||||
26.823706827172103,112.5771839112856
|
||||
26.82382523997266,112.57711093588388
|
||||
26.823943652734542,112.57703796032986
|
||||
26.824062065457753,112.57696498462354
|
||||
26.824180478142292,112.57689200876496
|
||||
26.82429889078817,112.57681903275407
|
||||
26.824416715403633,112.5767464980989
|
||||
26.824533859020413,112.57667699873441
|
||||
26.824651399274774,112.57660868246823
|
||||
26.824762900762973,112.57658692553045
|
||||
26.824968687097577,112.57656763804074
|
||||
26.825104150528567,112.57650684107888
|
||||
26.82522465989416,112.57643823074989
|
||||
26.825345659446693,112.57637072881484
|
||||
26.8255763298452,112.57624421893341
|
||||
|
||||
|
||||
排序数据:
|
||||
26.81896660310204,112.57568137976324
|
||||
26.818966668056316,112.57568485844635
|
||||
26.81896683258833,112.57568538694994
|
||||
26.81896706207354,112.57568591545105
|
||||
26.818971211272444,112.57568644394968
|
||||
26.819027657144368,112.57572279587626
|
||||
26.81902999052958,112.57572518130716
|
||||
26.819046594080046,112.57572606581252
|
||||
26.819047035811135,112.57572695031374
|
||||
26.819047477540156,112.57573544393973
|
||||
26.81904791926707,112.57576035026403
|
||||
26.8190859083974,112.57584589447032
|
||||
26.819095546341085,112.5758903945585
|
||||
26.819153675938914,112.57597644303986
|
||||
26.8191650468231,112.5760208132482
|
||||
26.819221654527443,112.57610591408428
|
||||
26.819236806047,112.5761245744324
|
||||
26.819276064037396,112.5761608096667
|
||||
26.81929619389902,112.57619587959701
|
||||
26.819310184480436,112.57623094969783
|
||||
26.819315738575742,112.5762338575302
|
||||
26.8193352833325,112.57624421893341
|
||||
26.819355855639404,112.57626774620917
|
||||
26.819384451187933,112.57636063880027
|
||||
26.81941584428336,112.57637072881484
|
||||
26.81945285740347,112.57637074918446
|
||||
26.819460642360763,112.5764313389555
|
||||
26.81947053563866,112.57643823074989
|
||||
26.819488197195188,112.57645743645142
|
||||
26.819532022659132,112.5764835085963
|
||||
26.819536878267925,112.5764867800095
|
||||
26.819613220428206,112.57650684107888
|
||||
26.819635079638967,112.5765234581422
|
||||
26.819689146973122,112.57656763804074
|
||||
26.819717530408877,112.57658692553045
|
||||
26.819765257290772,112.57660868246823
|
||||
26.819793988171348,112.57661149583805
|
||||
26.81984156841068,112.57661462149986
|
||||
26.81987031666393,112.57667699873441
|
||||
26.819916608456698,112.57673414980971
|
||||
26.81994655656347,112.57673619431976
|
||||
26.819990868286688,112.5767464980989
|
||||
26.820022750763542,112.57681903275407
|
||||
26.82006704845146,112.57685866945901
|
||||
26.82009891465042,112.57686079387894
|
||||
26.820142688927376,112.57689200876496
|
||||
26.820175208327566,112.57696498462354
|
||||
26.820220480866162,112.57698328267305
|
||||
26.82029609426984,112.57698570087358
|
||||
26.820372540342063,112.57703796032986
|
||||
26.820449035279513,112.57710795477944
|
||||
26.82052479395364,112.57711047564952
|
||||
26.820600741070034,112.57711093588388
|
||||
26.820676451505513,112.5771839112856
|
||||
26.820750627333855,112.57723266155585
|
||||
26.820788099971104,112.57723510283108
|
||||
26.82079340880141,112.57725688653507
|
||||
26.82079871765643,112.57732986163221
|
||||
26.820804096213536,112.57735739748664
|
||||
26.820866626548845,112.57735767331373
|
||||
26.820983640738305,112.57740187937155
|
||||
26.82111632395692,112.57747604255579
|
||||
26.82117204164965,112.57747918205983
|
||||
26.821184743761496,112.57748204198309
|
||||
26.821197445813166,112.57755163699323
|
||||
26.821210607045213,112.57760363217366
|
||||
26.821290516628242,112.57762787191734
|
||||
26.82140278979742,112.57770484656757
|
||||
26.821515292745254,112.57772676391022
|
||||
26.821628395747688,112.57778243034805
|
||||
26.82174189376551,112.57784947830805
|
||||
26.82185566968843,112.57786026718888
|
||||
26.82196987298559,112.57793832470455
|
||||
26.822083935682734,112.57797111160743
|
||||
26.822198178890964,112.57801732090307
|
||||
26.82231299206679,112.57809575812311
|
||||
26.822427661696032,112.5780973993899
|
||||
26.82254293064344,112.57817722472228
|
||||
26.822658717481524,112.57822036992494
|
||||
26.822774624402133,112.5782580474171
|
||||
26.82289066838358,112.57833919555353
|
||||
26.823007036027615,112.5783432083879
|
||||
26.823123797760537,112.57842010282002
|
||||
26.82324089700492,112.57846626552721
|
||||
26.823355874237176,112.57850175198458
|
||||
26.823470001455,112.5785838835907
|
||||
26.82358841433288,112.57858892597905
|
||||
26.823706827172103,112.57866667791178
|
||||
26.82382523997266,112.57870908764811
|
||||
26.823943652734542,112.57875048180252
|
||||
26.824062065457753,112.57876896886103
|
||||
26.824180478142292,112.57877600898784
|
||||
26.82429889078817,112.57878304914836
|
||||
26.824416715403633,112.57879017489086
|
||||
26.824533859020413,112.57883467623317
|
||||
26.824651399274774,112.5788587003478
|
||||
26.824762900762973,112.57889357476125
|
||||
26.824968687097577,112.57890177088103
|
||||
26.825104150528567,112.57890962148315
|
||||
26.82522465989416,112.57891747212024
|
||||
26.825345659446693,112.57893123552938
|
||||
26.8255763298452,112.57893777257203
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user