如何在Android中获得距离公里?

use*_*493 7 android distance google-places-api

我是谷歌地图的新手,我想计算android中两个地方之间的距离.

为此,我得到两个位置lat和lag位置,我写下面的代码:

private double getDistance(double lat1, double lat2, double lon1, double lon2) {
    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.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double temp = 6371 * c;
    temp=temp*0.621;
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码无法给出两个地方之间的准确距离.找到距离的另一种方法是什么,请给我任何建议.

小智 18

@Chirag Patel

double distance;
Location locationA = new Location(“Point A”);
locationA.setLatitude(latA);
locationA.setLongitude(lngA);

Location locationB = new Location(“Point B”);
locationB.setLatitude(latB);
locationB.setLongitude(lngB);

// distance = locationA.distanceTo(locationB);   // in meters
distance = locationA.distanceTo(locationB)/1000;   // in km
Run Code Online (Sandbox Code Playgroud)


ckp*_*tel 5

使用以下代码可以找到距离,但您希望以公里为单位进行转换.

double distance;
Location locationA = new Location("point A");
locationA.setLatitude(latA);
locationA.setLongitude(lngA);

Location locationB = new Location("point B");
locationB.setLatitude(latB);
locationB.setLongitude(lngB);

distance = locationA.distanceTo(locationB);
Run Code Online (Sandbox Code Playgroud)