【问题标题】:How to calculate distance using coordinates from LocationManager如何使用 LocationManager 中的坐标计算距离
【发布时间】:2010-12-28 09:23:36
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    你可以看看Location 类。你可以设置经度和纬度,还有一个distanceTo方法可以使用

    【讨论】:

    【解决方案2】:

    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;
        }
    

    【讨论】:

    • Math.toRadians(degrees) 可能更准确。不确定
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多