我有一个带有两个点的 OpenLayers-3 地图。我想从 p1 到 p2 的方向旋转地图(如导航系统,当你转动地图时也会旋转)。
在 android 中有一个函数 p1.bearingTo(p2) 以度为单位返回方位。但它仅在更改经度时按预期工作,对于纬度,它与预期相反。如何解决?
我有一个带有两个点的 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 (double , double)
bearing = 180 - p1.bearingTo(p2)
这会切换。