【问题标题】:Getting distance between Two Locations in android but not working在android中获取两个位置之间的距离但不起作用
【发布时间】:2018-05-06 09:30:53
【问题描述】:

其实我想得到两个纬度和朗度之间的准确距离。但是我尝试了三种不同的功能,但都没有给我正确的距离。

这是代码:

 private double distance(double lat1, double lon1, double lat2, double lon2) {

//first formula
        Location startPoint=new Location("locationA");
        startPoint.setLatitude(lat1);
        startPoint.setLongitude(lon1);

        Location endPoint=new Location("locationA");
        endPoint.setLatitude(lat2);
        endPoint.setLongitude(lon2);

        double distancee=startPoint.distanceTo(endPoint);

// second formula
        float[] results=new float[1];
        Location.distanceBetween( lat1,  lon1,  lat2,  lon2, results);
        float result= 0;
        if (results != null) {
            result = results[0];
        }
        double dvar=(double)result;



        //third formula
        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 (distancee);
    }


    private double deg2rad(double deg) {
        return (deg * Math.PI / 180.0);
    }

    private double rad2deg(double rad) {
        return (rad * 180.0 / Math.PI);
    }

这些都没有给我正确的距离请指导我如何实现这个目标

【问题讨论】:

  • 你怎么知道距离不对?是太大还是太小?还是接近正确的距离?换句话说,你得到的距离和你期望的距离是多少?
  • 我在网上得到了这两个 lat 和 lang 的距离,它给了我近 4.1 公里,但这些函数给了我 2 公里
  • 我预计超过 4 公里,但它给了我 2 公里
  • 你在谷歌地图上在线查看距离吗?因为您计算的距离是直线上的原始距离,所以它不考虑 Google 地图等道路或其他任何东西。
  • 是的,我在谷歌地图上查看了 5.1 公里

标签: android location distance street-address


【解决方案1】:

您得到的距离是两点之间的直线,正如您使用GoogleMaps 中的工具发现的那样,它是正确的。为了获得考虑到道路和其他一切的距离,您必须使用Google Directions Api。您需要使用 RetrofitOkHttp 或其他方式发出 HTTP 请求。

在您的请求中,您需要提供出发地和目的地,作为响应,您会得到一堆信息,包括距离,您可以在我链接的文档网站上找到更多信息。

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多