我有經緯度位置,並希望得到那以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