android - 根据行驶方向旋转标记

标签 android google-maps angle direction driving-directions

我的 Google map 中有一个如下所示的标记:

pic

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

最佳答案

如果您使用 GPS 定位用户,那么您在 onLocationChanged 中获得的 Location 对象包含 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) 是图像的中心。

关于android - 根据行驶方向旋转标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27092113/

相关文章:

android - 是否有任何解决方案可以使 Android 设备成为 Cast Receiver?

java - Android日历,获取事件ID

ios - 谷歌地图 iOS 反向地理编码

math - 如何从前两个数据包推断新的四元数旋转?

java - 在java中计算具有角度的点的移动

php - Android 应用程序向 mysql 数据库添加数据会抛出 JSONException

android - 如何获取开发者在其 Play 商店帐户中上传的应用程序列表?

JavaScript 设置函数

google-maps - 使用带有backbone.js 的谷歌地图

c# - 如何从相对方向确定 360° 角?