根据行驶方向旋转标记
Posted
技术标签:
【中文标题】根据行驶方向旋转标记【英文标题】:Rotate marker based on driving direction 【发布时间】:2015-01-21 09:56:24 【问题描述】:我的 Google Maps 地图中有一个标记,如下所示:
当用户驾驶时,我想根据他的驾驶方向旋转它。我怎样才能做到这一点?我可能应该使用以前的位置和当前位置坐标进行计算,但我不知道如何。
【问题讨论】:
你显然知道如何找到位置。在第一个循环之前将前一个位置设置为与当前相同。然后你的循环不断地计算前一个位置和当前位置之间的距离,当它足够大时,方向类似于atan2(dy,dx)
,此时你设置标记方向,然后记住previous == current
并做另一个循环。
你为什么不使用Location
对象的bearing
呢?您可以将其设置为CameraPosition
。
在传单api中怎么做?
【参考方案1】:
如果您使用 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) 是图像的中心。
【讨论】:
基于这个答案它是如何知道汽车的正面和侧面的? 不知道,假设小车向前移动(它使用两个顺序位置,移动方向指向后一个)。 知道如何在 Angular Google 地图上执行此操作吗?以上是关于根据行驶方向旋转标记的主要内容,如果未能解决你的问题,请参考以下文章