- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 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 米,因为在人类“行走(而非站立)”的情况下,这是可能的,人类可以在“X”秒内走完至少 1 米的距离。所以如果返回的覆盖距离小于 1 米,你可以简单地丢弃。
让我们决定最大标准(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/
我面临一个非常奇怪的问题。 我想实现从DataTable中删除行的选项,因此实现了以下方法: onRemoveRow() { setState( () { last
我正在 JavaScript 中处理物理问题,并且我有一个值指示“物理”世界中的接触数量。这个值可以在0-6之间。问题是i波动很大。我想要的是过滤掉尖峰。假设该数字是 3,然后在不到一秒的时间内它会变
我在 C 中有两个静态可变变量,我想在逻辑语句中检查它们。但是,当我这样做时,我收到警告“未定义的行为:此语句 1037 中未定义 volatile 访问的顺序”是否有可能在很短的时间内暂停 C 变量
我是 C Sharp 的新手,正在使用 XNA Framework 编写游戏。我创建了一个项目,它是“Platformer”XNA 入门工具包的重大修改版本。 我看到(看似)随帧率随机波动。有时它会一
我是一名优秀的程序员,十分优秀!