我需要在我的java代碼中實現harvesine距離。Java:有關弧度,Math.cos,Math.sin,double和long的問題
我在Javascript中找到了這個片段,我需要將它轉換爲java。
- 如何將經度和緯度轉換爲Java中的弧度?
- Math.sin需要Java中的雙精度值。我應該通過以弧度還是以前的轉換值?
- Math.sin和Math.cos返回很長時間。我是否應該聲明一個並將其傳遞給Math.sqrt或將其轉換爲double?
感謝
dLat = (lat2-lat1).toRad();
dLon = (lng2-lng1).toRad();
a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
d = R * c;
return d;
對於(1),使用'Math.toRadians(度)'會更容易閱讀。 – coobird 2011-03-05 09:44:02
@coobird謝謝,更新。 – 2011-03-05 09:45:57