2
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 密耳)。但答案显示为 6point smthing。我不知道它的米/公里/英里。

请帮帮我...谢谢

4

1 回答 1

1

如果您不厌其烦地生成了一些编译并运行的代码,请阅读 javadocs 并通过调试器运行以下更正的代码:

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 米。这对我来说似乎是正确的。

于 2012-07-18T10:30:31.690 回答