代码之家  ›  专栏  ›  技术社区  ›  NandhiniB

如果谷歌地图中的起点和终点相同,则获取行驶距离

  •  -1
  • NandhiniB  · 技术社区  · 8 年前

    我正在开发谷歌地图方向API。
    我需要计算两点之间的移动距离。
    如果起点和终点相同,我们如何计算行驶的距离?

    有谁能帮我或给我一些建议吗?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Nithin    8 年前

    如果用户从起点到终点旅行,您将通过以下代码获得距离。

    private float distanceCal(double lat1, double lon1, double lat2, double lon2) {
            Location loc1 = new Location(provider);
            loc1.setLatitude(lat1);
            loc1.setLongitude(lon1);
    
        Location loc2 = new Location(provider);
        loc2.setLatitude(lat2);
        loc2.setLongitude(lon2);
    
        float distanceInMeters = loc1.distanceTo(loc2);
        return distanceInMeters;
    }
    
     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            String provider = locationManager.getBestProvider(criteria, false);
    

    但在这里,当您移动时,您将获得当前位置,当您到达距离为0的目的地时,您将通知用户已到达目的地。

    但当用户以自己的方式旅行并需要计算沿途旅行的距离时,我们需要获得最后一点和当前点之间的距离,并将其连续附加到总距离数据中。

        2
  •  1
  •   Tara    8 年前

    尝试此代码

    public double Distance(LatLng StartP, LatLng EndP) {
            int Radius = 6371;// radius of earth in Km
            double lat1 = StartP.latitude;
            double lat2 = EndP.latitude;
            double lon1 = StartP.longitude;
            double lon2 = EndP.longitude;
            double dLat = Math.toRadians(lat2 - lat1);
            double dLon = Math.toRadians(lon2 - lon1);
            double a = 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);
            double c = 2 * Math.asin(Math.sqrt(a));
            double valueResult = Radius * c;
            double km = valueResult / 1;
            DecimalFormat newFormat = new DecimalFormat("####");
            int kmInDec = Integer.valueOf(newFormat.format(km));
            double meter = valueResult % 1000;
            int meterInDec = Integer.valueOf(newFormat.format(meter));
            Log.i("Radius Value", "" + valueResult + "   KM  " + kmInDec
                    + " Meter   " + meterInDec);
    
            return Radius * c;
        }