我有一个带有两个点的OpenLayers-3映射。我想在从p1到p2的方向上旋转地图(就像导航系统一样,当你旋转地图时也会旋转)。
在android中有一个函数p1.bearingTo(p2),它以度为单位返回方位。但只有当改变经度时,它才能像预期的那样工作,因为纬度和预期的相反。如何解决?
在JS中,此代码计算2点之间的旋转(以度为单位):
var degrees = Math.atan2((nextCoordinate[0] - currentCoordinate[0]), (nextCoordinate[1] - currentCoordinate[1])) * 180 / Math.PI;
if (degrees < 0.0)
degrees += 360.0;
对于Android(Java),您可以使用与此处所述相同的Math atan2函数:http://developer.android.com/reference/java/lang/Math.html#atan2(双,双)
bearing = 180 - p1.bearingTo(p2)
这会切换到asis。