中心点 C を中心に水平方向と垂直方向にそれぞれ 5 km の距離にある A と B の 2 つの点を取得しようとしています。したがって、点 A と B は、辺の長さが 10 km の「ボックス」を作成し、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 km の誤差範囲で概算しても問題ありません。垂直距離は問題ありませんが (10.06km)、水平距離は 10km ではなく約 6km です。
私の数式の何が問題になっていますか? 非常に単純な数学エラーだと思いますが、見つけることができません。非常にシンプルで迅速なコードが必要だったので、この StackOverflow の回答に基づいて計算しました: lat/lon + km distance を操作するための単純な計算?