首页 > 解决方案 > 局部坐标系与经纬度的逆

问题描述

我有一个功能可以将纬度和经度转换为 localCordinateSystem

const EARTH_RADIUS_KM = 6371.0;

const distanceInMeters = (lat1, lon1, lat2, lon2) => {
  const lonDiff = toRadians(lon2 - lon1);
  const latDiff = toRadians(lat2 - lat1);

  const a = Math.pow(Math.sin(latDiff / 2), 2) + Math.cos(toRadians(lat1)) *
    Math.cos(toRadians(lat2)) * Math.pow(Math.sin(lonDiff / 2), 2);

  const angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  return angle * EARTH_RADIUS_KM * 1000.0;
};

const localCoordinateSystem = (lat, lon, originLat, originLon, radius) => {
  let latDist = distanceInMeters(originLat, originLon, lat, originLon);
  let lonDist = distanceInMeters(originLat, originLon, originLat, lon);
  if (lat < originLat) latDist *= -1;
  if (lon < originLon) lonDist *= -1;

  return {
    x: parseFloat(latDist) + parseFloat(radius),
    y: parseFloat(lonDist) + parseFloat(radius),
  };
};

如果您看到函数 localCoordinateSystem 采用 lat、lon、originLat、originLon 和 radius 并返回 x 和 y。

但现在我想要一个接受 x、y、originLat、originLon 和 radius 并返回 lat 和 lon 的函数。

标签: javascriptgislatitude-longitudetrigonometryinverse

解决方案


推荐阅读