2

我有一个具有纬度和经度的位置,并希望获得一个新位置,该位置与该位置的距离为 x 米,角度为 d 度。这将与 Location.distanceBetween() 相反。是否有任何 Android API 可以做到这一点。我知道我可以自己编写这样的函数,但我想知道是否已经有一个 API。

4

4 回答 4

3

这里有一些公式和示例代码(JavaScript):Movable Type Scripts。查找“给定距离和距起点的方位角的目标点”。

以下是该网站的 JavaScript 摘录:

var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
                      Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                             Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));

在上面的代码中,d是距离,brng是方位角,R是地球半径。

将它移植到 Java 应该是微不足道的。

于 2010-01-05T23:03:02.367 回答
1

这被称为“第一测地线”(或有时是“主测地线”)问题,如果您需要自己实现它,它可能会帮助您在 Google 上找到算法。

于 2010-01-05T22:52:17.993 回答
0

现在自己实现这个,但确实希望这个函数在某个时候出现,所以相应地编写代码——创建你自己的函数,添加一些单元测试。

将来在您的功能中添加以下内容:

def myFunc(args):
  res = # compute stuff
  #if(debug):
    res2 = # make api call
    assert(res = res2)
  return res

一段时间后:

def myFunc(args):
  return # make api call

一段时间后完全删除该功能。

于 2010-01-05T22:49:24.433 回答
0

这是它的反面:

SphericalUtil.computeOffsetOrigin(loc1, dist, angle);

它还具有 distanceBetween 函数:

SphericalUtil.computeDistanceBetween(...);

库:

球形实用程序

于 2018-03-09T07:14:17.303 回答