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);

2つの方法で異なる答えが得られるだけでなく、両方とも間違っているようです.. Googleマップとそれが約14km(約8mils)を示している答えを見たのでしかし、答えは 6 ポイント 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 に答える