我需要在我的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