我想创建一个网站,其功能应该是阅读您当前的标题。
答案 0 :(得分: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
其中lat1
和lon1
是我们当前的纬度和经度,lat2
和lon2
是目标的纬度和经度,azimuth
是从我们当前位置看到的目标的方位角,从正北方向顺时针测量。
(这个公式只是近似的,因为它假定地球是一个球体,但与其他误差源相比,这引入的误差应该可以忽略不计,例如位置和设备方向读数不准确。如果你真的想消除甚至但是,这个小错误,您可以使用更复杂的公式WGS84计算given in the Wikipedia article球体上的方位角。)
请注意,上述公式的所有输入都需要在radians中给出,因为这是JavaScript trigonometric functions所期望的。通常,纬度和经度以度为单位,因此您需要先将它们与Math.PI / 180
相乘,然后将它们转换为弧度。上面的计算结果也是弧度;要将其转换为度数,您需要将azimuth
值乘以180 / Math.PI
。
一旦你知道了目标的方位角和the compass heading of the device,就可以简单地从前者中减去后者,得到你需要旋转箭头使其指向目标的角度。