/**

* 获取两个经纬度坐标正北方向夹角

* @param {Array} o_latlngs 原点经纬度坐标 [经度, 纬度]

* @param {Array} latlngs 经纬度坐标

* @return {Number} 返回角度

*/

function getTwoPointAngle(o_latlngs, latlngs) {

let A = new MyLatLng(o_latlngs[0], o_latlngs[1]);

let B = new MyLatLng(latlngs[0], latlngs[1]);

// console.log(getAngle(B, A));

return getAngle(B, A);

}

/**

* 求B点经纬度

* @param A 已知点的经纬度,

* @param distance AB两地的距离 单位km

* @param angle AB连线与正北方向的夹角(0~360)

* @return B点的经纬度

*/

function getMyLatLng(A, distance, angle) {

let dx = distance * 1000 * Math.sin(Math.toRadians(angle));

let dy = distance * 1000 * Math.cos(Math.toRadians(angle));

let bjd = (dx / A.Ed + A.m_RadLo) * 180.0 / Math.PI;

let bwd = (dy / A.Ec + A.m_RadLa) * 180.0 / Math.PI;

return new MyLatLng(bjd, bwd);

}

/**

* 获取AB连线与正北方向的角度

* @param A A点的经纬度

* @param B B点的经纬度

* @return AB连线与正北方向的角度(0~360)

*/

function getAngle(A, B) {

let dx = (B.m_RadLo - A.m_RadLo) * A.Ed;

let dy = (B.m_RadLa - A.m_RadLa) * A.Ec;

let angle = 0.0;

angle = Math.atan(Math.abs(dx / dy)) * 180.0 / Math.PI;

let dLo = B.m_Longitude - A.m_Longitude;

let dLa = B.m_Latitude - A.m_Latitude;

if (dLo > 0 && dLa <= 0) {

angle = (90.0 - angle) + 90;

} else if (dLo <= 0 && dLa < 0) {

angle = angle + 180.0;

} else if (dLo < 0 && dLa >= 0) {

angle = (90.0 - angle) + 270;

}

return angle;

}

class MyLatLng {

constructor(lng, lat) {

const Rc = 6378137; // 赤道半径

const Rj = 6356725; // 极半径

// 经度转为度分秒

this.m_LoDeg = lng;

this.m_LoMin = ((lng - this.m_LoDeg) * 60);

this.m_LoSec = (lng - this.m_LoDeg - this.m_LoMin / 60.0) * 3600;

// 纬度转为度分秒

this.m_LaDeg = lat;

this.m_LaMin = ((lat - this.m_LaDeg) * 60);

this.m_LaSec = (lat - this.m_LaDeg - this.m_LaMin / 60.0) * 3600;

this.m_Longitude = lng;

this.m_Latitude = lat;

this.m_RadLo = lng * Math.PI / 180.0; // 经度弧度

this.m_RadLa = lat * Math.PI / 180.0; // 纬度弧度

this.Ec = Rj + (Rc - Rj) * (90.0 - this.m_Latitude) / 90.0;

this.Ed = this.Ec * Math.cos(this.m_RadLa);

}

}

exports = module.exports = {

getTwoPointAngle: getTwoPointAngle

};

两个经纬度偏角_计算两个经纬度坐标与正北方向夹角相关推荐

  1. JS计算两个经纬度坐标与正北方向夹角

    /** * 获取两个经纬度坐标正北方向夹角 * @param {Array} o_latlngs 原点经纬度坐标 [经度, 纬度] * @param {Array} latlngs 经纬度坐标 * @ ...

  2. 两个经纬度偏角_怎么根据两个经纬度计算出航向

    C/C++ codedouble CChartCtrl::CalcltDirct(float fStarPtx, float fStarPty, float fEndPtx, float fEndPt ...

  3. 两个经纬度偏角_[转载]根据两点的经纬度求方位角和距离,等

    最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的"砖家",要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂, ...

  4. matlab求偏转角,轮胎的回正力矩——侧偏角特性计算实例

    轮胎的回正力矩--侧偏角特性计算实例 某轮胎额定载荷N F z 8000=,在此载荷作用下附着系数 8.0=y μ,侧偏刚度 rad N K /81000=,转折系数1.0=y E .该轮胎半径m R ...

  5. 两塑胶柱脚光纤端子_插销两个塑胶柱光纤端子_无塑胶柱光纤端子_无锁螺丝头光纤端子_塑胶双柱脚光纤端子_两塑胶柱无锁螺丝孔光纤端子

    两塑胶柱脚光纤座子_插销两个塑胶柱光纤座子_无塑胶柱光纤座子_无锁螺丝头光纤座子_塑胶双柱脚光纤座子_两塑胶柱无锁螺丝孔光纤座子 光纤耦合器TOSLINK是一种将数字电信号转换为光信号以传输数据的光传 ...

  6. c#语言+计算两个位置的距离,C#计算两个经纬度之间的距离

    最近在项目中有一个功能需要计算两个经纬度之间的距离,在网上找了很多,也试了很多,下面的计算方法得出的结果是精度是最高,希望对大家有所帮助. private const double EARTH_RAD ...

  7. java中日期计算2月份_计算两日期间2月29日总数的Java程序

    事先声明,本人仅仅是个计算机领域的新手,不久前开始学习Java.后来我接到了一份关于计算两日期间2月29日总数的编程作业,仓促之中我便写下了这个程序.由于之前可以说毫无编程经验,Java也仅仅是只学了 ...

  8. 正方形里面两个扇形相交部分_计算下图中阴影部分的面积,最简单的方法是用正方形的面积除以2...

    这是一道小升初数学题,是某师大附中2018年招生分班考试题.题目是计算下图阴影部分的面积,如下图所示: 小升初数学题 图形包含了正方形.扇形和三角形,但是所求阴影部分的面积却是两个不规则的图形.这两个 ...

  9. python相似图片计算_计算两张图片相似度的方法总结

    python工具包-pyssim 简介 python工具包,用来计算图像之间的结构相似性 (Structural Similarity Image Metric: SSIM).结构相似性介绍详见:ht ...

最新文章

  1. 企业如何告别这 5 类不靠谱的员工?
  2. python界面设置-Python进入后台界面(admin)设定
  3. [POI 2009] gas 贪心
  4. 实现自己的“单页”博客,只需要一个指令 (Moka)
  5. pycharm点击右上角退出程序时terminate和disconnect区别?(别用disconnect)
  6. 二十年后的回眸(2)——顺风顺水的前三年
  7. SAP CDS view里将Date和time连接成timestamp的函数
  8. 南工大计算机学院,江南-欢迎访问湖北工业大学计算机学院官方网站
  9. [Canvas]空战游戏进阶 增加己方子弹管理类
  10. 如何成为Emacs高手,像神一样使用编辑器
  11. Java学习笔记目录索引 (持续更新中)
  12. ctypes 传递opencv二值化图像给C++函数
  13. 锁定计算机密码如何取消,如何取消笔记本电脑硬盘密码锁?
  14. zblog php 二级菜单,zblog博客系统二级(下拉)导航菜单设置教程
  15. 【微信公众号】微信公众号授权出现的常见问题解决方案
  16. 硬件工程师常用的电路基础公式+换算!
  17. 获取java时间 小时_Java 如何获取当前时间前一个小时的时间
  18. 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择
  19. 2021-09-02牛客网每日10题--前端
  20. 时间煮雨,人生浅笑嫣然

热门文章

  1. openMVG原理、编译、源码理解、实践
  2. SX1276/77/78学习笔记1 - 概要和专业术语
  3. 轻松云上开发:从IBM Cloud 开始!
  4. 东方青苍的头饰有多贵?目测人均可入手....
  5. HTTP错误 401.1-未经授权:访问由于凭据无效被拒绝。
  6. 光萤CEO陈海洲:平台模式将成为户用分布式光伏市场的主流 | 爱分析调研
  7. 关于select标签的一些操作总结
  8. 风光互补发电实训平台QY-TYN11
  9. 物联网供水智能监测系统
  10. C#中ToInt32以及类似函数用法介绍