目标是使标记朝下一个坐标点旋转。以下是获取角度的方法:
private double computeAngleBetween(LatLng from, LatLng to) {
double fromLat = from.latitude;
double fromLng = from.longitude;
double toLat = to.latitude;
double toLng = to.longitude;
double dLat = fromLat - toLat;
double dLng = fromLng - toLng;
return 2 * asin(sqrt(pow(sin(dLat / 2), 2) +
cos(fromLat) * cos(toLat) * pow(sin(dLng / 2), 2)));
}
以下是我创建标记的代码:
@Override
public void onMapReady(GoogleMap googleMap) {
//Unnecessary code is deleted
float bearing = (float)computeAngleBetween(theRoute.get(0),theRoute.get(1));
Marker theAirplane = gMap.addMarker(new MarkerOptions()
.position(start)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.airplane))
.flat(true)
.anchor(0.5f, 0.5f)
.rotation(bearing)
.draggable(true));
theAirplane.setRotation(bearing);
movePlane(theAirplane, theRoute.size()-1);
}
所以,我无法弄清楚问题是什么。一切似乎都没问题,但没有任何作用,你能帮帮我吗?
答案 0 :(得分:0)
您可以使用' setRotation(浮动旋转)'设置标记的旋转。旋转轴垂直于标记。旋转0对应于标记的默认位置。
确保您的项目附带了最新的Play Services SDK。您需要从SDK Manager下载r12,然后将该库项目附加到您的项目中。
以下示例项目演示如何使用' setRotation':https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/FlatMarkers
我在这里找到了答案:Maps V2 how to rotate Marker - where is rotation option?