22

このコードを使用しましたが、機能しません:

41.1212、11.2323 のような 2 つの GPS 座標間の距離が必要 (Java)

double d2r = (180 / Math.PI);
double distance = 0;

try{
    double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
    double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
    double a =
        Math.pow(Math.sin(dlat / 2.0), 2)
            + Math.cos(startpoint.getLat() * d2r)
            * Math.cos(endpoint.getLat() * d2r)
            * Math.pow(Math.sin(dlong / 2.0), 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = 6367 * c;

    return d;

} catch(Exception e){
    e.printStackTrace();
}
4

6 に答える 6

20

経度と緯度は度(0-360)で示されます。度をラジアン(0-2π)に変換する場合は、360で除算し、2πを掛ける(または同等に、π/ 180を掛ける)必要があります。ただし、コードでは180/πを掛けます

つまり、変更

double d2r = (180 / Math.PI);

の中へ

double d2r = Math.PI / 180;
于 2010-09-15T07:36:29.683 に答える
10

Geocalcを見てください

Coordinate lat = new GPSCoordinate(41, .1212);
Coordinate lng = new GPSCoordinate(11, .2323);
Point point = new Point(lat, lng);

lat = new DegreeCoordinate(51.4613418);
lng = new DegreeCoordinate(-0.3035466);
Point point2 = new Point(lat, lng);
System.out.println("Distance is " + EarthCalc.getDistance(point2, point) / 1000 + " km");

距離は1448.7325760822912kmです

私は自分のプロジェクトの1つにそのライブラリを作成しました。

于 2012-08-19T01:26:04.720 に答える
8

http://www.androidsnippets.com/distance-between-two-gps-coordinates-in-meterのソリューション。

ポイントが十分に近く、地球が規則的な形状ではないことを省略できる場合にのみ機能します。

private double gps2m(float lat_a, float lng_a, float lat_b, float lng_b) {
    float pk = (float) (180/3.14169);

    float a1 = lat_a / pk;
    float a2 = lng_a / pk;
    float b1 = lat_b / pk;
    float b2 = lng_b / pk;

    float t1 = FloatMath.cos(a1)*FloatMath.cos(a2)*FloatMath.cos(b1)*FloatMath.cos(b2);
    float t2 = FloatMath.cos(a1)*FloatMath.sin(a2)*FloatMath.cos(b1)*FloatMath.sin(b2);
    float t3 = FloatMath.sin(a1)*FloatMath.sin(b1);
    double tt = Math.acos(t1 + t2 + t3);

    6366000*tt を返します。
}
///

メートル単位の 2 つの GPS 座標間の距離 を参照してください。

于 2011-07-22T08:05:34.870 に答える
2

2 点間の距離 (および他の多くの便利なもの) は、http ://www.movable-type.co.uk/scripts/latlong.html で見つけることができます。

于 2011-12-30T07:46:30.960 に答える
1

http://www.androidsnippets.com/distance-between-two-gps-coordinates-in-meter は、2 倍の d2r = (180 / Math.PI); であることを示しています。

于 2011-04-26T18:27:36.053 に答える