从另一点在某方位走一段距离后如何得到经纬度?



假设我有经纬度坐标[30,-87]。从那个点开始,我希望能够找到我在45度方向行驶10公里后的位置。

我第一次尝试解决这个问题并没有像你在下面看到的那样顺利。这显然没有考虑到单元,而单元至少对我来说是最难理解的部分。

var bearing = 45;
var distance = 10;
var position = {
"latitude": 30,
"longitude": -87
};
var newLat = Math.cos(bearing) * distance + position.latitude;
var newLon = Math.sin(bearing) * distance + position.longitude;

我假设地球的半径会在某一点上发挥作用,但我真的不知道从哪里开始,所以任何帮助都会非常感激。

我在这里使用了python代码:获得给定当前点,距离和方位的迟/长,并转换为JS代码以获得答案。

代码如下:

const bearing = 45;
const bearing_rad = (bearing*Math.PI)/180;
const distance = 10;
const EARTH_RADIUS = 6378.137;
const initial_position = {
"latitude": 30,
"longitude": -87
};
const init_lat = (initial_position.latitude*Math.PI)/180;
const init_lon = (initial_position.longitude*Math.PI)/180;
const final_lat = (180/Math.PI)*(Math.asin( Math.sin(init_lat)*Math.cos(distance/EARTH_RADIUS) + Math.cos(init_lat)*Math.sin(distance/EARTH_RADIUS)*Math.cos(bearing_rad)));
const final_lon = (180/Math.PI)*(init_lon + Math.atan2(Math.sin(bearing_rad)*Math.sin(distance/EARTH_RADIUS)*Math.cos(init_lat), Math.cos(distance/EARTH_RADIUS)-Math.sin(init_lat)*Math.sin(final_lat)));
console.log(final_lat, final_lon); // 30.06350049619102 -86.96303358059173

相关内容

  • 没有找到相关文章

最新更新