答案 0 :(得分:2)
请参考下面的几何图,您需要计算的唯一坐标是-(x2, y2)
,而您可以使用当前长经度lat-(x1, y1)
计算出的两个坐标中的其余坐标-(x2, y2)
因此,基本上,您需要一个函数,该函数将采用当前经度,纬度,即-(x1, y1)
,该距离在您的示例中为√2 * 10km
,并且指向(x2, y2)
的方位角位于{{ 1}}度。
135
答案 1 :(得分:1)
这是我使用过的功能-虽然不确定当靠近两极时是否有用
const fn = (latitude, longitude, distanceInKm, bearingInDegrees) => {
const R = 6378.1;
const dr = Math.PI / 180;
const bearing = bearingInDegrees * dr;
let lat = latitude * dr;
let lon = longitude * dr;
lat = Math.asin(Math.sin(lat) * Math.cos(distanceInKm / R) + Math.cos(lat) * Math.sin(distanceInKm / R) * Math.cos(bearing));
lon += Math.atan2(
Math.sin(bearing) * Math.sin(distanceInKm / R) * Math.cos(lat),
Math.cos(distanceInKm / R) - Math.sin(lat) * Math.sin(lat)
);
lat /= dr;
lon /= dr;
return {lat, lon};
}
所以,点将是
fn(y, x, 10, 90), // top right
fn(y, x, 10 * Math.sqrt(2), 135), // bottom right (Pythagoras rules!)
fn(y, x, 10, 180) // bottom left