计算仅在两个纬度和经度之间的距离

时间:2013-12-22 11:11:38

标签: java android

我对计算距离(英里数)有些困惑。每当我要在网上计算它给出不同的结果而不是我使用下面的方法。

我需要距离只有几英里。以下方法需要进行哪些修正。

public double calculationByDistance(Location loc1, Location loc2) {
        int Radius = 6371;// radius of earth in Km
        double lat1 = loc1.getLatitude();
        double lat2 = loc2.getLatitude();
        double lon1 = loc1.getLongitude();
        double lon2 = loc2.getLongitude();
        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;
        km = km * 0.62137;
        DecimalFormat newFormat = new DecimalFormat("####");
        int kmInDec = Integer.valueOf(newFormat.format(km));
        double meter = valueResult % 1000;
        int meterInDec = Integer.valueOf(newFormat.format(meter));
        Log.e("Radius Value", "" + valueResult + "   KM  " + kmInDec
                + " Meter   " + meterInDec);

        return Radius * c;
    }

如果有人有意,请回复。

提前致谢...

0 个答案:

没有答案