我在我的 Google 地图上有一个标记,看起来像这样:
当用户正在驾车时,我想根据他的行驶方向旋转它。我该如何实现这一点?我应该使用以前的位置和当前位置坐标进行计算,但我不知道怎么做。
我在我的 Google 地图上有一个标记,看起来像这样:
当用户正在驾车时,我想根据他的行驶方向旋转它。我该如何实现这一点?我应该使用以前的位置和当前位置坐标进行计算,但我不知道怎么做。
onLocationChanged
中获取的Location
对象包含方向角。Location.bearingTo()
计算两个坐标之间的方向角。Location prevLoc = ... ;
Location newLoc = ... ;
float bearing = prevLoc.bearingTo(newLoc) ;
如果您有一个轴承,您可以使用MarkerOptions.rotation()
来设置标记的旋转:mMap.addMarker(new MarkerOptions()
.position(markerLatLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
.anchor(0.5f, 0.5f)
.rotation(bearing)
.flat(true));
你必须将 锚点 设置为你想围绕旋转的点,并且它也是你想要标记位置的点。 (0.5, 0.5) 是图像的中心。
atan2(dy,dx)
的方法确定方向,然后设置标记方向,接着记住previous == current
并进行另一个循环。 - Weather VaneLocation
对象的bearing
属性?您可以将其设置为CameraPosition
。 - romtsn