【问题标题】:Heading javascript geolocation标题 javascript 地理定位
【发布时间】:2017-09-04 09:00:45
【问题描述】:

我喜欢创建一个网站,该网站的功能应该是阅读您当前的标题。

【问题讨论】:

  • 嗨,乔纳斯!我已经编辑了您的答案以直接显示屏幕截图并使其总体上更整洁。请确保我没有以任何方式意外更改您问题的含义,如果您认为有任何需要修复的内容,请随时撤消我的编辑和/或进一步编辑您的问题。谢谢,欢迎来到 Stack Overflow!

标签: javascript


【解决方案1】:

我假设您已经知道如何 use the JavaScript geolocation API 以及如何在 JavaScript 中呈现旋转箭头,并且只需要帮助计算箭头应旋转的角度。这个角度只是目标点与您所在位置的azimuth 角度与设备的罗盘方向之间的差异。

要近似计算目标的方位角,您可以使用以下公式(改编自上面链接的维基百科文章):

var dx = Math.sin(lon2 - lon1);
var dy = Math.cos(lat1)*Math.tan(lat2) - Math.sin(lat1)*Math.cos(lon2 - lon1);
var azimuth = Math.atan2(dx, dy);  // north = 0, increases clockwise

其中lat1lon1是我们当前的纬度和经度,lat2lon2是目标的纬度和经度,azimuth是从我们当前看到的目标的方位角位置,从正北顺时针方向测量。

(这个公式只是近似值,因为它假设地球是一个球体,但与其他误差源(例如不准确的位置和设备方向读数)相比,它引入的误差应该可以忽略不计。如果你真的想消除甚至不过,这个小错误,您可以使用更复杂的公式也可以计算WGS84 球体上的方位角given in the Wikipedia article。)

请注意,上述公式的所有输入都需要在radians 中给出,因为这是JavaScript trigonometric functions 所期望的。通常,纬度和经度以度为单位,因此您需要先将它们乘以Math.PI / 180 将它们转换为弧度。上面计算的结果也是弧度;要将其转换为度数,您需要将 azimuth 值与 180 / Math.PI 相乘。

一旦您知道了目标的方位角和the compass heading of the device,您可以简单地从前者中减去后者,以获得您需要旋转箭头以使其指向目标的角度。

【讨论】:

  • 它是如何“不工作”的?你能发布一个 sn-p / fiddle 来演示这个问题吗?
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2015-04-19
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多