2

目前,我在谷歌地图上有两点(LatLng)A 和 B。我将我的问题如下图所示: 在此处输入图像描述

当在垂直轴上旋转设备时,我想得到 A 点和 B 点之间的角度@ 在此处输入图像描述

我想得到 AB 和北轴(y 轴)之间的角度我该怎么做。我创建了一个函数来获取角度,但它返回 null :(

    public double getAngleTwoPoint(LatLng point1,LatLng point2){
    double lat1=point1.latitude;
    double lat2=point2.latitude;
    double long1=point1.longitude;
    double long2=point2.longitude;
    double deltaLong=long2-long1;
    double angle = Math.atan2(Math.sin(deltaLong)*Math.cos(lat2), Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(deltaLong));     
    return Math.toDegrees(angle);
}
4

2 回答 2

4

你可以使用这个公式来获得纬度之间的角度看看。

θ = atan2(sin(Δlong)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(Δlong))

请注意,在使用此公式和 Δlong = long2 - long1 之前,应将角度 (θ) 转换为弧度。

atan2 是几乎所有编程语言中都可以找到的通用函数(主要在 Math 包中)。通常还有角度和弧度之间的转换函数(也在数学包中)。

请记住,atan2 返回 -π ... +π 范围内的值,要将结果转换为罗盘方位,您需要将 θ 乘以 180/π,然后使用 (θ+360) % 360,其中 % 是模除返回除法余数的操作。

以下链接是涉及纬度和经度的公式的良好资源。他们还提供其公式的 Javascript 实现。事实上,答案是基于此页面的信息:

http://www.yourhomenow.com/house/haversine.html

于 2013-11-14T08:50:04.410 回答
0

如果你有三角形

CB
A

则 AB 与 y 轴的夹角等于 CAB 夹角。tg(CAB) = BC/AC,你需要角度,所以实际上你要找的是 arctg(BC/AC)。

于 2013-11-14T08:49:49.683 回答