Merge branch 'tt' into dev2_aiSdk

This commit is contained in:
liujing
2021-04-01 19:48:36 +08:00
4 changed files with 83 additions and 24 deletions

View File

@@ -163,6 +163,10 @@ public class V2XWarningEntity implements Serializable {
this.warningContent = warningContent;
}
public void setStopLines(List<MogoLatLng> stopLines) {
this.stopLines = stopLines;
}
public int getType() {
return type;
}
@@ -199,18 +203,6 @@ public class V2XWarningEntity implements Serializable {
return speed;
}
public String getTargetColor() {
return targetColor;
}
public String getRoadId() {
return roadId;
}
public String getLaneId() {
return laneId;
}
public String getUuid() {
return uuid;
}
@@ -219,10 +211,6 @@ public class V2XWarningEntity implements Serializable {
return color;
}
public String getCarId() {
return carId;
}
public String getWarningContent() {
if (this.warningContent == null) {
setTipContent(type);
@@ -254,6 +242,10 @@ public class V2XWarningEntity implements Serializable {
return stopLineDistance;
}
public List<MogoLatLng> getStopLines() {
return stopLines;
}
@Override
public String toString() {
return "V2XWarningEntity{" +

View File

@@ -2,6 +2,7 @@ package com.mogo.module.v2x.scenario.scene.warning;
import android.content.Context;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
@@ -15,11 +16,11 @@ import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.model.DrawLineInfo;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.utils.LocationUtils;
import com.mogo.utils.WorkThreadHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
/**
* @author liujing
@@ -45,7 +46,7 @@ public class V2XWarningMarker implements IV2XMarker {
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
clearPOI();
WorkThreadHandler.getInstance().postDelayed(() -> {
IMogoMarker marker = drawMarker(markerShowEntity);
IMogoMarker marker = drawMarkerAndReturn(markerShowEntity);
//如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画
if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) {
drawLine();
@@ -62,7 +63,32 @@ public class V2XWarningMarker implements IV2XMarker {
}
public IMogoMarker drawMarker(MarkerShowEntity markerShowEntity) {
public void pointsBetween() {
try {
List stopLines = mMarkerEntity.getStopLines();
if (stopLines.size() > 1) {
MogoLatLng x = mMarkerEntity.getStopLines().get(0);
MogoLatLng y = mMarkerEntity.getStopLines().get(1);
//两点间的距离
float distance = CoordinateUtils.calculateLineDistance(x.lon, x.lat, y.lon, y.lat);
float average = distance / 3;
//两点间的角度
double angle = LocationUtils.getAngle(x.lon, x.lat, y.lon, y.lat);
//根据距离和角度获取下个点的经纬度
List replenish = new ArrayList();
for (int i = 1; i < 3; i++) {
MogoLatLng newLocation = LocationUtils.getNewLocation(x, average * i, angle);
replenish.add(newLocation);
}
}
} catch (Exception e) {
}
}
//绘制marker
public IMogoMarker drawMarkerAndReturn(MarkerShowEntity markerShowEntity) {
MogoMarkerOptions options = new MogoMarkerOptions()
.object(markerShowEntity)
.latitude(markerShowEntity.getMarkerLocation().getLat())
@@ -76,6 +102,7 @@ public class V2XWarningMarker implements IV2XMarker {
return marker;
}
//绘制线
public void drawLine() {
DrawLineInfo drawLineInfo = new DrawLineInfo();
MogoLatLng slatLng = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon());
@@ -85,6 +112,7 @@ public class V2XWarningMarker implements IV2XMarker {
V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo);
}
//平移
public void smooth(IMogoMarker marker) {
List<MogoLatLng> latLngs = new ArrayList<>();
MogoLatLng sLocation = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon());

View File

@@ -28,8 +28,14 @@ import com.mogo.utils.network.utils.GsonUtil;
*/
public class LocationUtils {
private static final String TAG = "LocationUtils";
private final static double radius_b = 6378137;//大半径
private final static double radius_s = 6356725;//小半径
private static double mRadLo;
private static double mRadLa;
private static double Ec;
private static double Ed;
public static void geoCodeSearch(MogoLocation location,IMogoGeoSearchListener listener) {
public static void geoCodeSearch(MogoLocation location, IMogoGeoSearchListener listener) {
MogoRegeocodeQuery mogoRegeocodeQuery = new MogoRegeocodeQuery();
mogoRegeocodeQuery.setPoint(new MogoLatLng(location.getLatitude(), location.getLongitude()));
@@ -83,6 +89,39 @@ public class LocationUtils {
return latLon;
}
/*
* 计算两点间的角度
* */
public static double getAngle(double lon1, double lat1, double lon2,
double lat2) {
double fLat = Math.PI * (lat1) / 180.0;
double fLng = Math.PI * (lon1) / 180.0;
double tLat = Math.PI * (lat2) / 180.0;
double tLng = Math.PI * (lon2) / 180.0;
double degree = (Math.atan2(Math.sin(tLng - fLng) * Math.cos(tLat), Math.cos(fLat) * Math.sin(tLat) -
Math.sin(fLat) * Math.cos(tLat) * Math.cos(tLng - fLng))) * 180.0 / Math.PI;
if (degree >= 0) {
return degree;
} else {
return 360 + degree;
}
}
/*
* 根据角度获取指定距离点的经纬度
* */
public static MogoLatLng getNewLocation(MogoLatLng st, double distance, double angle) {
mRadLo = st.getLon() * Math.PI / 180.;
mRadLa = st.getLat() * Math.PI / 180.;
Ec = radius_s + (radius_b - radius_s) * (90. - st.lat) / 90;
Ed = Ec * Math.cos(mRadLa);
double dx = distance * Math.sin(Math.toRadians(angle));
double dy = distance * Math.cos(Math.toRadians(angle));
double lon_new = (dx / Ed + mRadLo) * 180. / Math.PI;
double lat_new = (dy / Ec + mRadLa) * 180. / Math.PI;
return new MogoLatLng(lat_new, lon_new);
}
}

View File

@@ -7,12 +7,12 @@
"collisionLon": 116.417634,
"stopLines":[
{
"stopLineLat": 39.977082,
"stopLineLon": 116.417553
"lat": 39.977082,
"lon": 116.417553
},
{
"stopLineLat": 39.977078,
"stopLineLon": 116.417666
"lat": 39.977078,
"lon": 116.417666
}
],
"from": 1,