球形余弦Haversine公式

Posted

技术标签:

【中文标题】球形余弦Haversine公式【英文标题】:Spherical Cosinus Haversine Formula 【发布时间】:2017-08-21 09:21:34 【问题描述】:

所以目前我编写了一个函数 hasrsine 公式来计算 2 个坐标的距离,我找到了这段代码,但我不知道如何在 android 中编写它。这是我将创建的功能。这个

private double SphericalCosinus(double lat1, double long1, double lat2,
        double long2) 
    //formula

公式就是这个,有一些教程告诉我使用数学库,但我总是写错代码,因为应用程序没有显示位置。这是我得到的公式

=(6371.1*((2*ASIN(SQRT((SIN((RADIANS(lat2)-RADIANS(lat1))/2)^2)+COS(RADIANS(lat2))*COS(RADIANS(lat1))*(SIN((RADIANS(long2)-RADIANS(long1))/2)^2))))))

【问题讨论】:

你的问题是什么? 我尝试在android studio中写 IDE 不相关。 【参考方案1】:

通过查找和替换的力量:

private double SphericalCosinus(double lat1, double long1, double lat2, double long2) 
    return 6371.1*((2 * 
        Math.asin(
            Math.sqrt(
                (Math.sin(Math.pow((Math.toRadians(lat2)-Math.toRadians(lat1))/2),2.0)) + 
                Math.cos(Math.toRadians(lat2)) * 
                Math.cos(Math.toRadians(lat1)) *
                (Math.sin(Math.pow(Math.toRadians(long2)-Math.toRadians(long1))/2),2.0)
            )
        )
    ));

https://developer.android.com/reference/java/lang/Math.html

【讨论】:

运算符“^”不能应用于'double','int',又是一个错误 我认为您自己修复它是一个很好的做法。使用 Math.pow。 我已经编辑了答案,所以它可能会起作用。如果您对答案满意,请将其作为正确答案提交。谢谢 对不起,还是错误.....数学中的 pow (double, double) 不能应用于 double

以上是关于球形余弦Haversine公式的主要内容,如果未能解决你的问题,请参考以下文章

求解Haversine公式的分量时,sympy挂起[重复]

如何使用 Haversine 公式计算行驶距离(不是位移)?

如何在 ColdFusion 中锻炼 Haversine 公式

Haversine 公式 - 结果太高

Haversine 公式和 Python 3 - 数学域错误

Haversine 公式无法正常工作