如何在地图上显示两个地理位置之间的距离?

时间:2012-07-04 13:56:54

标签: android

我正在开发一个应用程序,用户必须记录位置,然后找到汽车。当他选择定位汽车选项时,应该显示停放的汽车。我计算距离,但距离总是显示0 metres..i dono为什么?有谁能告诉我如何显示人和停在地图上的汽车之间的距离...我想在地图上显示停放的汽车

3 个答案:

答案 0 :(得分:0)

你保存了停放的汽车的位置?你有这个人的实际位置?那么,你应该能够计算差异并至少获得距离(至少是视线中的距离)......

答案 1 :(得分:0)

如果您拥有USER和停放汽车的位置......

然后这应该工作

Location locationA = new Location("USER");  

locationA.setLatitude(latA);  
locationA.setLongitude(lngA);  

Location locationB = new Location("Parked Car");  

locationB.setLatitude(latB);  
LocationB.setLongitude(lngB);  

distance = locationA.distanceTo(locationB); 

答案 2 :(得分:0)

使用此功能计算实际距离:

public static double distFrom (double lat1, double lng1, double lat2, double lng2 ) 
{
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
    Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    int meterConversion = 1609;

    return new Double(dist * meterConversion).doubleValue();
}

并像这样使用它:

double distance = 0;
distance=distFrom(latA,lngA,latB,lngB);

如果你想将double转换为整数,请使用:

int distance=0;
distance=(int) distFrom(latA,lngA,latB,lngB);