最近开发一款导航的项目需要行驶方向,这里一般是gps会给我返回航向的,但是公司老系统的数据库没有这个数据,就只能自己计算咯


function getAngle(lng_a, lat_a, lng_b, lat_b) {
  var a = (90 - lat_b) * Math.PI / 180;
  var b = (90 - lat_a) * Math.PI / 180;
  var AOC_BOC = (lng_b - lng_a) * Math.PI / 180;
  var cosc = Math.cos(a) * Math.cos(b) + Math.sin(a) * Math.sin(b) * Math.cos(AOC_BOC);
  var sinc = Math.sqrt(1 - cosc * cosc);
  var sinA = Math.sin(a) * Math.sin(AOC_BOC) / sinc;
  var A = Math.asin(sinA) * 180 / Math.PI;
  var res = 0;
  if (lng_b > lng_a && lat_b > lat_a) res = A;
  else if (lng_b > lng_a && lat_b < lat_a) res = 180 - A;
  else if (lng_b < lng_a && lat_b < lat_a) res = 180 - A;
  else if (lng_b < lng_a && lat_b > lat_a) res = 360 + A;
  else if (lng_b > lng_a && lat_b == lat_a) res = 90;
  else if (lng_b < lng_a && lat_b == lat_a) res = 270;
  else if (lng_b == lng_a && lat_b > lat_a) res = 0;
  else if (lng_b == lng_a && lat_b < lat_a) res = 180;
  return res;
}

测试下来感觉计算的精度还行  ,就先这样用吧    各位大佬有好的建议和优化可以指点一下我。

同时凑一点文字吧,不然没法发布,工作前端也有一年多了,最近感觉我在前端的发展中有点迷茫,也可能是因为今年上海经济不怎么行,让我感觉前端的发展到后边好像没有后端那么好。在起初我的想法是专注于前端,不想参与内卷去往全栈发展,但现在感觉前端的局限性很大,好像没人关心你的技术能力,感觉只要会react和vue3做项目做业务就行了,那我学习底层就感觉没什么用武之地,因为我一直感觉原生js学的足够好,对技术提升的帮助是很大的,所以我从出了学校工作到现在一直在专注学习原生js,同时也学了react和vue3,但在我的面试经历中,别人只关注我的业务能力,技术差不多就行,所以我现在在考虑要不要早点学习一下后端的东西,希望能有大佬在这方面给一些意见