!2 有关定位方向与摇杆方向同步的改动

Merge pull request !2 from HereComesTheKing/master
This commit is contained in:
ZCShou 2023-05-04 01:55:31 +00:00 committed by Gitee
commit 8298bfa965
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 9 additions and 6 deletions

View File

@ -260,7 +260,7 @@ public class JoyStick extends View {
// 注意这里的 x y 圆中角度的对应问题 X 轴正向为 0 且转换为 km
disLng = mSpeed * (double)(DivGo / 1000) * mR * Math.cos(mAngle * 2 * Math.PI / 360) / 1000;// 注意安卓中的三角函数使用的是弧度
disLat = mSpeed * (double)(DivGo / 1000) * mR * Math.sin(mAngle * 2 * Math.PI / 360) / 1000;// 注意安卓中的三角函数使用的是弧度
mListener.onMoveInfo(mSpeed, disLng, disLat);
mListener.onMoveInfo(mSpeed, disLng, disLat, 90.0F-mAngle);
mTimer.start();
}
});
@ -385,7 +385,7 @@ public class JoyStick extends View {
// 注意这里的 x y 圆中角度的对应问题 X 轴正向为 0 且转换为 km
disLng = mSpeed * (double)(DivGo / 1000) * mR * Math.cos(mAngle * 2 * Math.PI / 360) / 1000;// 注意安卓中的三角函数使用的是弧度
disLat = mSpeed * (double)(DivGo / 1000) * mR * Math.sin(mAngle * 2 * Math.PI / 360) / 1000;// 注意安卓中的三角函数使用的是弧度
mListener.onMoveInfo(mSpeed, disLng, disLat);
mListener.onMoveInfo(mSpeed, disLng, disLat, 90.0F-mAngle);
}
}
}
@ -424,7 +424,7 @@ public class JoyStick extends View {
}
public interface JoyStickClickListener {
void onMoveInfo(double speed, double disLng, double disLat);
void onMoveInfo(double speed, double disLng, double disLat, double angle);
void onPositionInfo(double lng, double lat);
}

View File

@ -35,8 +35,10 @@ public class ServiceGo extends Service {
// 定位相关变量
public static final double DEFAULT_LAT = 36.667662;
public static final double DEFAULT_LNG = 117.027707;
public static final float DEFAULT_BEA = 0.0F;
private double mCurLat = DEFAULT_LAT;
private double mCurLng = DEFAULT_LNG;
private float mCurBea = DEFAULT_BEA;
private double mSpeed = 1.2; /* 默认的速度,单位 m/s */
private static final int HANDLER_MSG_ID = 0;
private static final String SERVICE_GO_HANDLER_NAME = "ServiceGoLocation";
@ -146,7 +148,7 @@ public class ServiceGo extends Service {
mJoyStick = new JoyStick(this);
mJoyStick.setListener(new JoyStick.JoyStickClickListener() {
@Override
public void onMoveInfo(double speed, double disLng, double disLat) {
public void onMoveInfo(double speed, double disLng, double disLat, double angle) {
mSpeed = speed;
// 根据当前的经纬度和距离计算下一个经纬度
// Latitude: 1 deg = 110.574 km // 纬度的每度的距离大约为 110.574km
@ -154,6 +156,7 @@ public class ServiceGo extends Service {
// 具体见http://wp.mlab.tw/?p=2200
mCurLng += disLng / (111.320 * Math.cos(Math.abs(mCurLat) * Math.PI / 180));
mCurLat += disLat / 110.574;
mCurBea = (float) angle;
}
@Override
@ -231,7 +234,7 @@ public class ServiceGo extends Service {
Location loc = new Location(LocationManager.GPS_PROVIDER);
loc.setAccuracy(Criteria.ACCURACY_FINE); // 设定此位置的估计水平精度以米为单位
loc.setAltitude(55.0D); // 设置高度 WGS 84 参考坐标系中的米
loc.setBearing(1.0F); // 方向
loc.setBearing(mCurBea); // 方向
loc.setLatitude(mCurLat); // 纬度
loc.setLongitude(mCurLng); // 经度
loc.setTime(System.currentTimeMillis()); // 本地时间
@ -286,7 +289,7 @@ public class ServiceGo extends Service {
Location loc = new Location(LocationManager.NETWORK_PROVIDER);
loc.setAccuracy(Criteria.ACCURACY_COARSE); // 设定此位置的估计水平精度以米为单位
loc.setAltitude(55.0D); // 设置高度 WGS 84 参考坐标系中的米
loc.setBearing(1.0F); // 方向
loc.setBearing(mCurBea); // 方向
loc.setLatitude(mCurLat); // 纬度
loc.setLongitude(mCurLng); // 经度
loc.setTime(System.currentTimeMillis()); // 本地时间