目前,我在Google地图上有两个点(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);
}
您可以使用此公式来获取经纬度之间的夹角。
θ= atan2(sin(Δlong)* cos(lat2),cos(lat1)* sin(lat2)-sin(lat1)* cos(lat2)* cos(Δlong))
请注意,在使用此公式和Δlong= long2-long1之前,应将角度(θ)转换为弧度。
atan2是几乎所有编程语言(大多数在Math软件包中)中发现的常见功能。通常,还有用于度和弧度之间转换的函数(也在Math包中)。
请记住,atan2返回的值在-π... +π范围内,以将结果转换为罗盘方位,您需要将θ乘以180 /π然后使用(θ+ 360)%360,其中%是模数除法操作返回除法的其余部分。
以下链接是涉及纬度和经度的公式的一个很好的资源。他们还提供公式的Javascript实现。实际上,答案是基于此页面上的信息:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句