如何使用LocationManager中的坐标计算距离

时间:2010-12-28 09:23:37

标签: android gps android-sdk-2.1 android-2.2-froyo

我正在使用LocationManager来获取用户的纬度和经度值。这些值会定期更新到数据库。

现在,我想根据存储的纬度和经度值找出两个用户之间的距离。我想在两个用户之间的距离小于(例如100米)时显示消息。任何人都可以指导我一个教程或一些如何实现它的示例代码。

2 个答案:

答案 0 :(得分:1)

您可以查看Location课程。您可以设置经度和纬度,并且可以使用distanceTo方法

答案 1 :(得分:0)

Ou pode utilizar este metodo que eu desenvolvi ... 或者你可以使用我开发的这种方法...

public static Double distance(latitudeA, latitudeB, longitudeA, longitudeB) {
        double radius = 3958.75;
        double dlat = ToRadians(Double.parseDouble(String.valueOf(latitudeB))
                - Double.parseDouble(String.valueOf(latitudeA)));
        double dlon = ToRadians(Double.parseDouble(String.valueOf(longitudeB))
                - Double.parseDouble(String.valueOf(longitudeA)));
        double a = Math.sin(dlat / 2)
                * Math.sin(dlat / 2)
                + Math.cos(ToRadians(Double.parseDouble(String.valueOf(latitudeA))))
                * Math.cos(ToRadians(Double.parseDouble(String.valueOf(latitudeB)))) * Math.sin(dlon / 2)
                * Math.sin(dlon / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        Double d = radius * c;
        double meterConversion = 1609.00;
        return d * meterConversion;
    }

    private static double ToRadians(double degrees) {
        double radians = degrees * 3.1415926535897932385 / 180;
        return radians;
    }