gpt4 book ai didi

android - GPS 位置波动

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:49 25 4
gpt4 key购买 nike

我在 Google map 上绘制心形取决于半径(1 - 100 米)。绘制心形后,用户需要在该心形边界上行走,并且需要从头到尾走完(从底部开始,然后向左,然后向右,然后再次从底部开始)。

我能够画心,并且获得 360 分 (latlng)。这是我的代码,它将绘制心脏和图像。

private void initPath() {
path = new PolylineOptions();
path.color(ContextCompat.getColor(mActivity,R.color.heart_green));
path.width(25);

// offset to bottom
double offsetY = getY(Math.toRadians(180));

for (int angle = 0; angle <= 360; angle++) {
double t = Math.toRadians(angle);
double x = getX(t);
double y = getY(t) - offsetY;
//Log.d(TAG, "angle = " + angle + "(x = " + x + ",y= " + y + ")");

//convert x,y to lat lng
LatLng latLng = getLatLng(x, y, center);
path.add(latLng);

heart360Points.add(latLng);

}

}

private double getX(double t) {
return radius * 16 * Math.sin(t) * Math.sin(t) * Math.sin(t) / HEART_RATIO;
}

private double getY(double t) {
return radius * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t)) / HEART_RATIO;
}

private LatLng getLatLng(double dx, double dy, LatLng centerHeart) {
return new LatLng(centerHeart.latitude + Math.toDegrees(dy / EARTH_RADIUS),
centerHeart.longitude + Math.toDegrees(dx / EARTH_RADIUS) / Math.cos(Math.toRadians(centerHeart.latitude)));

}

这是心脏图像。

但是每当我尝试在心脏边界行走时,GPS 位置波动太大,所以我永远无法完成心脏行走。我目前每秒都在请求位置。

这是我的位置代码。

 private static final long FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS = 2000 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.love_lead_perform);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mApiClient = new GoogleApiClient.Builder(this)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();

mApiClient.connect();


mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mSettingsClient = LocationServices.getSettingsClient(this);
createLocationCallback();
createLocationRequest();
createLocationSettingsRequest();


}

private void createLocationSettingsRequest() {
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();
}

private void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

我不明白为什么 GPS 位置波动太大。即使我站着,我也会得到不同的 GPS 位置。

如何获得准确的 GPS 位置?

最佳答案

位置波动是正常现象。问题是,您应该何时/如何接受或丢弃意外位置。正如用户(Patrick Artner)评论的那样,你应该放弃突然的侧向移动。

您可以通过两种方式丢弃这些 Action ,

  1. 让我们决定最低标准(1 米)。

    假设最小距离为 1 米,因为在人类“行走(而非站立)”的情况下,这是可能的,人类可以在“X”秒内走完至少 1 米的距离。所以如果返回的覆盖距离小于 1 米,你可以简单地丢弃。

  2. 让我们决定最大标准(5 米)。

    假设最大距离为 5 米,因为在人类“行走(而非运行)”的情况下,这是不可能的,人类可以在“X”秒内完成超过 5 米的距离。所以如果返回的覆盖距离超过 5 米,你可以简单地丢弃。

在哪里,

距离 = NEW_LOCATION - OLD_LOCATION ( How to get distance? )

X = 一定的时间(以秒为单位)

只接受小于 5 m 和大于 1 m 的位置(距离范围您可以根据自己的理解选择)。

关于android - GPS 位置波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com