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