changed the track obj with road

This commit is contained in:
zhongchao
2022-08-24 14:17:42 +08:00
parent 4c56e7214b
commit 3575415a77

View File

@@ -102,27 +102,27 @@ public class TrackObj {
private void calLoc() {
//距离计算,位置修正
if (relativeStatic()) {
double angle = roadAngle != 0 ? roadAngle : cacheData.getHeading();
if (centerLineInfo == null && isFourWheelType()) {
try {
centerLineInfo = CallerHDMapManager.INSTANCE.getCenterLineInfo(lon, lat, (float) angle);
} catch (Exception e) {
Log.d("hy uuid : " + cacheData.getUuid(), "道路获取异常");
}
if (centerLineInfo != null && centerLineInfo.getPoints() != null && !centerLineInfo.getPoints().isEmpty()) {
double[] matchedPoint = PointInterpolatorUtil.mergeToRoad(cacheData.getLongitude(), cacheData.getLatitude(), centerLineInfo.getPoints());
if (matchedPoint[0] > 0 || matchedPoint[1] > 0) {
lon = matchedPoint[0];
lat = matchedPoint[1];
s2LatLng = S2LatLng.fromDegrees(cacheData.getLatitude(), cacheData.getLongitude());
s2CellId = S2CellId.fromLatLng(s2LatLng).parent(22);
} else {
centerLineInfo = null;
}
} else {
centerLineInfo = null;
}
}
// double angle = roadAngle != 0 ? roadAngle : cacheData.getHeading();
// if (centerLineInfo == null && isFourWheelType()) {
// try {
// centerLineInfo = CallerHDMapManager.INSTANCE.getCenterLineInfo(lon, lat, (float) angle);
// } catch (Exception e) {
// Log.d("hy uuid : " + cacheData.getUuid(), "道路获取异常");
// }
// if (centerLineInfo != null && centerLineInfo.getPoints() != null && !centerLineInfo.getPoints().isEmpty()) {
// double[] matchedPoint = PointInterpolatorUtil.mergeToRoad(cacheData.getLongitude(), cacheData.getLatitude(), centerLineInfo.getPoints());
// if (matchedPoint[0] > 0 || matchedPoint[1] > 0) {
// lon = matchedPoint[0];
// lat = matchedPoint[1];
// s2LatLng = S2LatLng.fromDegrees(cacheData.getLatitude(), cacheData.getLongitude());
// s2CellId = S2CellId.fromLatLng(s2LatLng).parent(22);
// } else {
// centerLineInfo = null;
// }
// } else {
// centerLineInfo = null;
// }
// }
cacheData = cacheData.toBuilder().setLongitude(lon).setLatitude(lat).build();
} else {
centerLineInfo = null;
@@ -175,7 +175,11 @@ public class TrackObj {
}
public boolean relativeStatic() {
return speedAverage < LIMIT_SPEED | cacheData.getSpeed() < LIMIT_SPEED;
return (speedAverage < LIMIT_SPEED && cacheData.getSpeed() < LIMIT_SPEED) | isInRange() ;
}
private boolean isInRange(){
return s2LatLng.getDistance(S2LatLng.fromDegrees(cacheData.getLatitude(), cacheData.getLongitude())).distance(6371000) < 0.2;
}
public boolean isFourWheelType() {