【问题标题】:What distance does distanceTo returns?distanceTo 返回的距离是多少?
【发布时间】:2016-11-04 02:06:05
【问题描述】:

是否考虑到海拔变化?

我的意思是,如果我从这个三角形的左顶点开始并在右上顶点结束,它返回距离 a 还是 b?

double distanceInMetersFloat = initialPosition.distanceTo(finalPosition);

在我的应用中,initialPosition 和 finalPosition 都是具有高度的位置(我使用 Google Elevation API 设置它们)。

根据谷歌:

使用 WGS84 椭球定义距离。

但是你可以在有或没有高度的情况下做到这一点。

【问题讨论】:

  • 您应该能够通过尝试固定的initialPosition 和两个仅在高度上不同的finalPosition 值来自己测试。如果 API 不考虑海拔高度,则很容易在您自己的代码中针对海拔高度调整结果。

标签: android distance


【解决方案1】:

计算Location.distanceTo时不考虑高度。

你可以这样测试:

Location location1 = new Location("");
location1.setLatitude(40);
location1.setLongitude(-4);
location1.setAltitude(0);

Location location2 = new Location("");
location2.setLatitude(30);
location2.setLongitude(-3);
location2.setAltitude(0);

Location location3 = new Location("");
location3.setLatitude(30);
location3.setLongitude(-3);
location3.setAltitude(100);

Log.e("Without altitude", ""+location1.distanceTo(location2));
Log.e("With altitude", ""+location1.distanceTo(location3));
Log.e("Different altitude", ""+location2.distanceTo(location3));

这是输出:

E/Without altitude﹕ 1113141.5

E/With altitude﹕ 1113141.5

E/Different altitude﹕ 0.0

【讨论】:

  • 所以我计算的是 tan 而不是 sin。谢谢。
  • 考虑到三角近似只在短距离上有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 2023-03-03
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多