【问题标题】:calculating distance showing wrong some time with latitude and longitude计算距离显示错误的时间与纬度和经度
【发布时间】:2011-08-19 06:37:02
【问题描述】:

我使用纬度和经度计算了两个地方之间的距离。有时它显示错误的距离。我需要以英里为单位计算确切的距离。能否请你帮忙。我应该对我的代码进行哪些更改。 这是我的代码。 lat2 和 lng2 是我通过 NETWORK PROVIDER/GPS 获取的当前位置地理点。 lat1 和 lng2 是目标地理点

                   double earthRadius = 3958.75;//earthRadius in miles
               // double earthRadius = 6371;
                double dLat = Math.toRadians(lat1-lat2);
                double dLng = Math.toRadians(lng1-lng2);
                double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                           Math.cos(Math.toRadians(lat2)) * Math.cos(Math.toRadians(lat1)) *
                           Math.sin(dLng/2) * Math.sin(dLng/2);
                double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
                double dist = earthRadius * c;//distance in miles

谢谢你..

【问题讨论】:

    标签: android


    【解决方案1】:

    像这样试试。

     float results[] = new float[3];
        Location.distanceBetween(latitude_a, longitude_a, latitude_b,longitude_b, results);
        distance = results[0];
    

    【讨论】:

      【解决方案2】:
           private double distance(double lat1, double lon1, double lat2, double lon2) {
            double theta = lon1 - lon2;
            double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
            dist = Math.acos(dist);
            dist = rad2deg(dist);
            dist = dist * 60 * 1.1515;
             return (dist);
          }
      
         private double deg2rad(double deg) {
            return (deg * Math.PI / 180.0);
          }
         private double rad2deg(double rad) {
            return (rad * 180.0 / Math.PI);
          }
      

      【讨论】:

        猜你喜欢
        • 2011-08-16
        • 2018-09-02
        • 2012-10-13
        • 2012-01-26
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 2021-09-05
        • 2018-06-11
        相关资源
        最近更新 更多