最後に私の答えは:(c#で)
おそらく4つの座標は必要ありませんが、かなり正確だと思います。
public static void GetBoundingCoords(double centerLat, double centerLong, double distance)
{
Coordinate top= MaxLatLongOnBearing(centerLat, centerLong,45,10);
Coordinate right = MaxLatLongOnBearing(centerLat, centerLong, 135, 10);
Coordinate bottom = MaxLatLongOnBearing(centerLat, centerLong, 225, 10);
Coordinate left = MaxLatLongOnBearing(centerLat, centerLong, 315, 10);
}
public static Coordinate MaxLatLongOnBearing(double centerLat, double centerLong, double bearing, double distance)
{
var lonRads = ToRadian(centerLong);
var latRads = ToRadian(centerLat);
var bearingRads = ToRadian(bearing);
var maxLatRads = Math.Asin(Math.Sin(latRads) * Math.Cos(distance / 6371) + Math.Cos(latRads) * Math.Sin(distance / 6371) * Math.Cos(bearingRads));
var maxLonRads = lonRads + Math.Atan2((Math.Sin(bearingRads) * Math.Sin(distance / 6371) * Math.Cos(latRads)), (Math.Cos(distance / 6371) - Math.Sin(latRads) * Math.Sin(maxLatRads)));
var maxLat = RadiansToDegrees(maxLatRads);
var maxLong = RadiansToDegrees(maxLonRads);
return new Coordinate(){Latitude=maxLat, Longitude=maxLong};
}
編集
正方形の角を中心点からxマイルに設定すると、正方形の端が同じxマイルにならないことに気付きました。(数学は私の長所ではありませんでした)ですから、正方形のエッジをxマイルにしたい場合に中心点からコーナーポイントまでの距離を取得するには、ピタゴラスの定理を使用して対角線の距離を計算しました。(直角三角形では、斜辺上の正方形(対角線)は他の2つの辺の正方形に等しい)