@nibot의 솔루션을 해결하는 데 약 2 시간을 소비해야했으며, 중심점과 너비 / 높이 (또는 반경)가 킬로미터 단위 인 경계 상자를 만드는 방법이 필요했습니다.
나는 수학적으로 / 지리적으로 해결책을 이해하지 못한다. 나는 네 좌표를 얻기 위해 (시도 및 오류로) 솔루션을 조정했습니다.
북쪽:
private static Position FromKmToNPosition(Position p, double km)
{
double r_earth = 6378;
var pi = Math.PI;
var new_latitude = p.Lat + (km / r_earth) * (180 / pi);
return new Position(new_latitude, p.Long);
}
동쪽:
private static Position FromKmToEPosition(Position p, double km)
{
double r_earth = 6378;
var pi = Math.PI;
var new_longitude = p.Long + (km / r_earth) * (180 / pi) / Math.Cos(p.Lat * pi / 180);
return new Position(p.Lat, new_longitude);
}
남쪽:
private static Position FromKmToSPosition(Position p, double km)
{
double r_earth = 6378;
var pi = Math.PI;
var new_latitude = p.Lat - (km / r_earth) * (180 / pi);
return new Position(new_latitude, p.Long);
}
서부 :
private static Position FromKmToWPosition(Position p, double km)
{
double r_earth = 6378;
var pi = Math.PI;
var new_longitude = p.Long - (km / r_earth) * (180 / pi) / Math.Cos(p.Lat * pi / 180);
return new Position(p.Lat, new_longitude);
}