Java Android计算两个位置之间的距离

Java Android计算两个位置之间的距离,java,android,location,Java,Android,Location,可能重复: 在你们给我一些关于地球不是一个完美球体的教育之前,当你们靠近两极时,一切都会发生变化,这似乎是我在网上所能找到的全部。在问我的父亲谁是一个有成就的地理学家,我的叔叔谁是一个量子物理学家谁为美国宇航局工作,我是一个卑微的计算机程序员之前,我想先问你们 我只需要一个球场公里的距离,因为乌鸦从一个电话飞到一个720平方公里的预先居住的位置列表,所以变化并不重要 这就是我,请不要把任何东西落在我身上 mLatitude=-38.3533177 mLongitude=144.9127674

可能重复:

在你们给我一些关于地球不是一个完美球体的教育之前,当你们靠近两极时,一切都会发生变化,这似乎是我在网上所能找到的全部。在问我的父亲谁是一个有成就的地理学家,我的叔叔谁是一个量子物理学家谁为美国宇航局工作,我是一个卑微的计算机程序员之前,我想先问你们

我只需要一个球场公里的距离,因为乌鸦从一个电话飞到一个720平方公里的预先居住的位置列表,所以变化并不重要

这就是我,请不要把任何东西落在我身上

mLatitude=-38.3533177
mLongitude=144.9127674
这是我,十分钟前,大约3公里外,乌鸦飞过

mLatitude=-38.3444385
mLongitude=144.9374762
我如何计算得到3公里

我对Java非常陌生,所以我不确定哪些内置数学函数可用,也不知道计算是什么

干杯


Mike。

你可以使用
Location
类的方法来计算两个位置之间的距离。

我问了一个小问题,看看这个:看到这个答案:DistanceTo()和DistanceBetween()有点难以捉摸,如果我把它们输入到搜索中,我会得到数学方程的结果,这些方程做了你认为内置函数应该做的事情。正如诺斯特拉斯所说,它们的地球半径略有不同,但对我来说,我只需要一个棒球场。好的,你是说你不知道如何使用这个方法?你能告诉我这个函数的结果单位是多少吗?它似乎不返回公里,对吗?它似乎返回了以公里为单位的距离。
public class Calculator {
    private static final int earthRadius = 6371;
    public static float calculateDistance(float lat1, float lon1, float lat2, float lon2)
    {
        float dLat = (float) Math.toRadians(lat2 - lat1);
        float dLon = (float) Math.toRadians(lon2 - lon1);
        float a =
                (float) (Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1))
                        * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2));
        float c = (float) (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));
        float d = earthRadius * c;
        return d;
    }
}