6

2 つの場所 (それぞれ独自の緯度と経度の値を持つ) が互いに特定の距離 (たとえば、半径 3 マイル) 内にあるかどうかを判断しようとしています。各場所の緯度と経度を表す double 値があります。

//Location 1
Double lattitude1 = 40.7143528;
Double longitude1 = -74.0059731;

//Location 2
Double lattitude2 = 33.325;
Double longitude2 = 44.422000000000025;

このタイプの値でこれを行う方法が完全にはわからないため、これら2つの場所が互いに半径内にあるかどうかをどのように判断するのか疑問に思っています。

4

2 に答える 2

7

大圏距離を見る

double CoordDistance(double latitude1, double longitude1, double latitude2, double longitude2)
{
    return 6371 * Math.acos(
        Math.sin(latitude1) * Math.sin(latitude2)
        + Math.cos(latitude1) * Math.cos(latitude2) * Math.cos(longitude2 - longitude1));
}

緯度と経度が度単位の場合は、ラジアンに変換します。

于 2013-03-12T21:51:03.597 に答える
0

2 点間の距離を取得するには、このコード スニペットを使用するだけです。

Point2D p1 = new Point2D(lattitude1, longitude2);
Point2D p2 = new Point2D(lattitude2, longitude2);

double distanceBetweenTwoPoints = (double)Math.sqrt((double)Math.pow((p1.x - p2.x), 2.0) + (double)Math.pow((p1.y - p2.y), 2.0));

--- 編集 ---

2 座標 (2D ではない) ソリューションのコメントを確認してください。

于 2013-03-12T21:48:31.287 に答える