根据行驶方向旋转标记

时间:2014-11-23 17:40:51

标签: android google-maps angle direction driving-directions

我的Google地图中有一个标记,如下所示:

pic

当用户开车时,我想根据他的行驶方向旋转它。我怎样才能做到这一点?我应该使用以前的位置和当前位置坐标进行计算,但我不知道如何。

1 个答案:

答案 0 :(得分:37)

如果您使用GPS定位用户,则Location中的onLocationChanged对象包含bearing

如果您只有两个坐标(例如,您只有来自网络位置提供者的坐标),则可以使用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));

您必须将anchor设置为要旋转的点,并且它也是您想要位于您设置为标记的位置的点。 (0.5,0.5)是图像的中心。