如何使用Node.js或javascript计算与另一点相距一定距离的点的经度/经度

时间:2018-09-27 05:07:14

标签: javascript node.js express

我需要使用经度(x,y)来找到一个正方形区域,如下图所示

enter image description here

我需要通过在两侧各增加10公里来获得其他所有3个角的经度和纬度。我正在使用Node.js / javascript来实现这一点。

2 个答案:

答案 0 :(得分:2)

请参考下面的几何图,您需要计算的唯一坐标是-(x2, y2),而您可以使用当前长经度lat-(x1, y1)计算出的两个坐标中的其余坐标-(x2, y2)

enter image description here

因此,基本上,您需要一个函数,该函数将采用当前经度,纬度,即-(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