我有经纬度位置,并希望得到那以x米,从该位置的距离为d度角的新位置。这将与Location.distanceBetween()相反。有没有任何Android API来做到这一点。我知道我可以自己编写这样一个函数,但是我想知道是否有API。反向Location.distanceBetween()
回答
现在自己实现,但确实希望此功能在某些时候出现,所以相应的代码 - 创建自己的功能,添加一些单元测试。
今后以下内容添加到您的功能:
def myFunc(args):
res = # compute stuff
#if(debug):
res2 = # make api call
assert(res = res2)
return res
一段时间后,:
def myFunc(args):
return # make api call
一段时间后,完全消除功能。
这就是所谓的“第一大地”(或有时“主要测”)的问题,这可能会帮助你找到关于谷歌的算法,如果你需要这个工具自己。
有一些公式和示例代码(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-05 23:27:09
我不这么认为,但这种方法远非精确。你可以在这里尝试一下3D球体:http://earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/destination.html(需要谷歌地球网页插件) – 2010-01-06 00:22:56
这个假设是球形地球(这就是为什么你需要'R'),但有一个误差与你旅行的距离成正比。这个错误的绝对值在很大的距离上会很大,这就是为什么它对于大的值看起来有问题。 – 2010-02-01 18:46:38
这里是它的相反:
SphericalUtil.computeOffsetOrigin(loc1, dist, angle);
它还具有distanceBetween功能:
SphericalUtil.computeDistanceBetween(...);
库:
- 1. Android Location.distanceBetween和Location.distanceTo区别
- 2. android location.distanceBetween和使用以前的位置
- 3. 反向<>和反向
- 4. Javascript反向日期,反向?
- 5. 反向
- 6. 反向
- 7. “反向”
- 8. CABasicAnimation反向(向后)
- 9. 反向Logistic函数/反向Sigmoid函数
- 10. JavaScript中的输入反向反斜杠:负反向
- 11. 反向串
- 12. 反向SQL LIKE
- 13. 反向validates_associated
- 14. Moment.js反向
- 15. 反向传播
- 16. “反向”粘头
- 17. SQL LIKE(反向)
- 18. 反向mysql_fetch_array?
- 19. 反向的preg_replace
- 20. 反向印刷
- 21. php strtotime反向
- 22. 反向接口
- 23. 反向在ViewPager
- 24. 反向功能
- 25. RecyclerView反向CardStack
- 26. 反向名单
- 27. Python endswith()反向?
- 28. 反向对象
- 29. fgetcsv/fopen反向
- 30. FrameLayout反向
仅供参考,您可能需要使用更多标签如'geospatial'在未来:-) – 2010-01-05 23:05:19
让自己一个人30分,罗马,你可以自己重新提出问题! ;) – 2010-01-06 00:07:17
它看起来不像。 – CaseyB 2010-01-05 22:44:34