我试图得到两个点,A 和 B,它们在中心点 C 周围水平和垂直距离各 5 公里。因此点 A 和 B 创建一个边长为 10 公里的“盒子”,而 C 正好这个盒子的中心。这是我的代码:
//Distance is 5 kilometers
float distance = 5;
float latCenter = locationInfo.lastLat;
float lngCenter = locationInfo.lastLong;
// Calculate corner point distance in lat and long
float latDelta = distance/110.54f;
float longDelta = distance/(111.320f(float)Math.cos((double)latCenter));
// Calculate coordinates of the corner points
float latA = lat - latDelta;
float longA = lng - longDelta;
float latB = lat + latDelta;
float longB = lng + longDelta;
我知道这些是近似值,但在我的情况下,误差范围约为 1 公里的近似值是可以的。垂直距离很好(10.06公里),但水平距离只有6公里左右,而不是10公里。
我的公式有什么问题?我猜这是一些非常简单的数学错误,但我就是找不到。我需要一个非常简单快捷的代码,所以我的计算基于这个 StackOverflow 答案:Simple calculation for working with lat/lon + km distance?