eagle 工控机提供车前引导线数据

This commit is contained in:
lianglihui
2021-10-22 19:39:45 +08:00
parent 18dc7918fd
commit 5742f2ad93
11 changed files with 306 additions and 12 deletions

View File

@@ -34,8 +34,11 @@ import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.smp.utils.MapAssetStyleUtils;
import com.mogo.eagle.core.function.smp.view.ISmallMapDirectionView;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.utils.DrivingDirectionUtils;
import com.mogo.module.common.utils.LocationUtils;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
@@ -184,7 +187,7 @@ public class SmallMapDirectionView
public void onCarLocationChanged2(Location latLng) {
Logger.d(MODULE_NAME, "onCarLocationChanged2 latLng:" + latLng);
LatLng currentLatLng = new LatLng(latLng.getLatitude(), latLng.getLongitude());
//更新车辆位置
if (mCarMarker != null) {
// mCarMarker.setRotateAngle(360 - latLng.getBearing());
mCarMarker.setPosition(currentLatLng);
@@ -193,11 +196,12 @@ public class SmallMapDirectionView
if (mCoordinatesLatLng.size() > 1) {
mCoordinatesLatLngCurrent.clear();
for (LatLng lng : mCoordinatesLatLng) {
MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude);
mCoordinatesLatLngCurrent.add(mogoLatLng);
}
// mCoordinatesLatLngCurrent.clear();
// for (LatLng lng : mCoordinatesLatLng) {
// MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude);
// mCoordinatesLatLngCurrent.add(mogoLatLng);
// }
removeLoction(latLng);
// 结束位置
LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1);
@@ -211,7 +215,7 @@ public class SmallMapDirectionView
endLatLng.latitude, endLatLng.longitude,
currentLatLng.latitude, currentLatLng.longitude
);
Log.d(MODULE_NAME, "calculateDistance=" + calculateDistance);
if (calculateDistance <= 20) {
clearPolyline();
@@ -226,6 +230,34 @@ public class SmallMapDirectionView
mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
private void removeLoction(Location latLng) {
for (LatLng l: mCoordinatesLatLng){
if (!isPointOnCarFront(latLng,l)){
mCoordinatesLatLng.remove(l);
}
}
}
public static boolean isPointOnCarFront(Location carLocal, LatLng pointLocal) {
double carLon = carLocal.getLongitude();
double carLat = carLocal.getLatitude();
double poiLon = pointLocal.longitude;
double poiLat = pointLocal.latitude;
float carAngle = carLocal.getBearing();
// 计算车辆与点之间的夹角
int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi(
carLon, carLat, poiLon, poiLat, (int) carAngle);
if (diffAngle <= 90) {
Log.i("lianglihui", "目标点在车辆--前方");
return true;
} else {
Log.i("lianglihui", "目标点在车辆--后方");
return false;
}
}
@Override
public void onCarLocationChanged(MogoLatLng latLng) {
Logger.d(MODULE_NAME, "onCarLocationChanged latLng:" + latLng);