/**

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

* @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. CentOS7种搭建FTP服务器
  2. 从农场女孩到首位图灵奖女性获得者,回顾法兰西斯·艾伦的辉煌一生
  3. 关于ngOptions的键值对
  4. 利用cx_Freeze将py文件打包成exe文件(图文全解)
  5. CodeForces - 1514D Cut and Stick(线段树/随机数)
  6. Android之app引导页(背景图片切换加各个页面动画效果)
  7. java应用部署docker_Docker部署JavaWeb项目实战
  8. MATLAB中的单相与三相dq变换模块
  9. 医疗器械/设备的法律法规汇总
  10. python3 爬虫 HTTP Error 403:Forbidden
  11. SSR、SSE、SST、判定系数(可决系数、拟合优度)的计算公式
  12. 【STM32】数码管显示按键控制舵机转动的角度(二)
  13. ap接口 php_php中api接口什么用
  14. linux中如何查看mac地址
  15. LODOP.ADD_PRINT_TEXT 参数解释说明
  16. 除了迅雷,目前还有什么下载软件好用?以下这3款你听过吗?
  17. 阿里云漏洞敏捷管理自动化报告
  18. 验证身份证号码是否有效
  19. jenkins部署成功执行自动化测试代码失败问题解决
  20. MT4/5 财经新闻 推送

热门文章

  1. 西安公共安全视频监控建设联网应用政府PPP项目签约
  2. Android Studio 使用起来很卡,内存CPU爆了
  3. 10万引大佬分享「写论文10大技巧」,连怎么沟通审稿人都提到了 | 科研党福利...
  4. 人工智能·调酒·哲学
  5. ipo 增量发行 存量发行
  6. 【通信】基于matlab的OFDM-MIMO通信建模与仿真
  7. 进入造车最为关键的一年,拜腾汽车有哪些值得我们期待?CEO毕福康又如何回应?... 1
  8. element-UI组件之日期时间选择器与时间格式转化
  9. 调节效应与中介效用实例讲解
  10. 绝对引用计算机几级,什么是计算机中的“绝对引用”?