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