反向位置.distanceBetween()

时间:2010-01-05 22:42:15

标签: android geospatial

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

4 个答案:

答案 0 :(得分: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应该是微不足道的。

答案 1 :(得分:1)

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

答案 2 :(得分: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

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

答案 3 :(得分:0)

与此相反:

SphericalUtil.computeOffsetOrigin(loc1, dist, angle);

它还具有distanceBetween函数:

SphericalUtil.computeDistanceBetween(...);

库:

SphericalUtil