球形余弦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 公式计算行驶距离(不是位移)?
如何在 ColdFusion 中锻炼 Haversine 公式