2016-01-16 3 views
0

Цель состоит в том, чтобы маркер поворачивался в направлении следующей координатной точки. Вот метод, чтобы получить угол:Невозможно повернуть маркер с помощью карт google v.2

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

попытаться преобразовать его в градусы, как 'Math.toDegrees (радианы)' – injecteer

+0

Это не помогло. – SanchelliosProg

ответ

0

Вы можете использовать 'setRotation (вращение поплавка)', чтобы установить поворот маркера. Ось вращения перпендикулярна маркеру. Вращение 0 соответствует положению маркера по умолчанию.

Убедитесь, что у вас есть последний SDK Службы Служб, прилагаемый к вашему проекту. Вам нужно загрузить r12 из SDK Manager, а затем присоединить этот проект библиотеки к вашему проекту.

Вот пример проекта demostrate, как использовать «setRotation»: https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/FlatMarkers

Вот где я нашел ответ: Maps V2 how to rotate Marker - where is rotation option?

Смежные вопросы