我试图确定两个位置(每个位置都有自己的纬度和经度值)是否在彼此的一定距离内,例如3英里半径。我有两个值来表示每个位置的纬度和经度。
//Location 1
Double lattitude1 = 40.7143528;
Double longitude1 = -74.0059731;
//Location 2
Double lattitude2 = 33.325;
Double longitude2 = 44.422000000000025;
我想知道如何确定这两个位置是否在彼此的半径内,因为我不完全确定如何使用这种类型的值来做到这一点。
参见大圆距离
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));
}
如果你的经纬度用度表示,将它们转换成弧度
要获得两点之间的距离,您只需要使用这段代码:
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));
—EDITED—
请查看注释,以获得两个坐标(不是2D)的解决方案