Android距离错误

时间:2012-07-18 07:29:21

标签: android google-maps

lat = 6.92961234
lng = 79.84796614

lat1 = 6.85620511
lng1 = 79.91251376 

Location locationA = new Location("point A");

locationA.setLatitude(lat);
locationA.setLongitude(lng);

Location locationB = new Location("point B");

locationB.setLatitude(lati);
locationB.setLongitude(lngi);

double distancei = locationA.distanceTo(locationB);

String cc = Double.toString(distancei);

float[] results = new float[1];
Location.distanceBetween(lati / 1E6, lngi / 1E6, lat / 1E6, lng / 1E6,results);
float s = results[0] * 0.000621371192f;
String a2 = Float.toString(s);

两种方法给了我不同的答案以及两个错误的错误 ..因为我看了谷歌地图和它显示的关于14公里(大约8英里)的答案。但答案显示为6点。而且我不知道它的米/公里/英里。

请帮帮我......谢谢

1 个答案:

答案 0 :(得分:1)

如果您已经麻烦地生成了一些编译和运行的代码,请阅读javadoc并通过调试器运行以下更正的代码:

private void test() {

    double lat = 6.92961234;
    double lng = 79.84796614;

    double lati = 6.85620511;
    double lngi = 79.91251376;

    Location locationA = new Location("point A");
    locationA.setLatitude(lat);
    locationA.setLongitude(lng);
    Location locationB = new Location("point B");
    locationB.setLatitude(lati);
    locationB.setLongitude(lngi);

    double distancei = locationA.distanceTo(locationB);
    float[] results = new float[3];
    Location.distanceBetween(lati, lngi, lat, lng,  results);
    // Distance in metres is in results[0]
}

您会看到distancei和results [0]都给出了相同的答案,即10807米。这对我来说似乎是正确的。