Повернуть маркер в зависимости от направления движения

У меня есть маркер на моей карте Google Maps, который выглядит следующим образом:

pic

Когда пользователь управляет автомобилем, я хочу повернуть его в зависимости от направления его движения. Как я могу этого добиться? Я, вероятно, должен использовать предыдущее местоположение и координаты текущего местоположения для расчета, но я не знаю, как это сделать.


person Gintas_    schedule 23.11.2014    source источник
comment
Вы, очевидно, знаете, как найти позицию. Перед первым циклом установите предыдущее положение таким же, как текущее. Затем ваш цикл постоянно вычисляет расстояние между предыдущей и текущей позициями и, когда оно достаточно велико, чтобы иметь значение, направление с чем-то вроде atan2(dy,dx), в этот момент вы устанавливаете ориентацию маркера, затем запоминаете previous == current и выполняете еще один цикл.   -  person Weather Vane    schedule 23.11.2014
comment
Почему вы не используете bearing объекта Location? Вы можете установить его на CameraPosition.   -  person romtsn    schedule 23.11.2014
comment
как это сделать в api листовки?   -  person ShAkKiR    schedule 19.09.2019


Ответы (1)


Если вы используете GPS для определения местоположения пользователя, то объект Location, который вы получаете в onLocationChanged, содержит подшипник.

Если у вас есть только две координаты (например, у вас есть только координаты от поставщика сетевого местоположения), вы можете использовать Location.bearingTo() для вычисления пеленга двух координат:

Location prevLoc = ... ;
Location newLoc = ... ;
float bearing = prevLoc.bearingTo(newLoc) ;

Если у вас есть азимут, вы можете установить поворот маркера с помощью _ 5_:

mMap.addMarker(new MarkerOptions()
                    .position(markerLatLng)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
                    .anchor(0.5f, 0.5f)
                    .rotation(bearing)
                    .flat(true));

Вам необходимо установить привязать к точке, вокруг которой нужно вращаться, а также к точке, в которой вы хотите находиться в позиции, установленной для маркера. (0,5, 0,5) - центр изображения.

person hunyadym    schedule 23.11.2014
comment
Основываясь на этом ответе, как он узнает переднюю и боковую часть автомобиля? - person The_Martian; 17.02.2016
comment
Он не знает, он предполагает, что машина движется вперед (использует два последовательных положения, направление движения указывает на последнее). - person hunyadym; 17.02.2016
comment
Есть идеи, как это сделать на Angular Google Maps? - person Wax; 06.01.2019