我需要在我的java代码中实现harvesine距离.
我在Javascript中找到了这个片段,我需要将其转换为java.
谢谢
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;
Run Code Online (Sandbox Code Playgroud)
首先,你应该阅读javadoc.sin(double)采用double
in参数,这是弧度中的角度,如文档中所述.您还可以在链接页面上找到sqrt也需要双倍的内容.
然后,您应该知道java可以自动执行非破坏性转换.因此,如果一个方法需要一个双倍而且你有一个很长的时间,那就不会有问题,因为转换long-> double没有损失.反之亦然,因此Java拒绝编译.
对于弧度转换,您将在Math类中找到toRadians方法.