Я отслеживаю местоположение автомобиля, пока он движется по карте. Автомобиль движется нормально. Однако моя проблема в том, что значок автомобиля мигает. Например, делая поворот, он делает крутой поворот вместо плавного поворота. Это вертится вокруг. Существует проблема ротации. Я использую Mapbox. Я получаю местоположение / координаты автомобиля (Широта и Долгота) из бэкэнд-системы примерно каждую минуту. Кроме того, я получаю заголовки (от заголовка и до заголовка также) в степени.
Есть несколько вещей, которые я пытаюсь решить: 1. Задавая два угла (местоположения транспортных средств) от Angle и toAngle, вот как я вычислил кратчайший угол между этими двумя значениями (подшипник):
public float shortestAngleUsing(float fromAngle, float toAngle) {
float diffInAngle = toAngle - fromAngle;
if (diffInAngle < -180) {
diffInAngle += 360;
}
if (diffInAngle > 180) {
diffInAngle -= 360;
}
return diffInAngle + fromAngle;
}
Итак, предположим, что транспортное средство движется от (от заголовка) к 285 ° (к заголовку) 65 ° или от 65 ° до 285 °. Транспортное средство делает здесь поворот, не двигаясь по прямой линии. Как лучше всего рассчитать заголовок?
Мне нужно вручную вычислить вращение, так как я использую Mapbox и, похоже, не могу найти метод, который делает вращение за меня. Это моя главная проблема. Я думаю, что лучший способ сделать вращение - это интерполировать углы. Найдя правильный toHeading, для интерполяции из fromHeading в toHeading путем погружения результата, который я получаю из метода shorttestAngleUsing (), например, на 20. Итак, у меня будет 20 угловых значений между fromHeading и toHeading.
Я также пытался PropertyValuesHolder.ofKeyframe («вращение», KeyFrameUtil.getKeyFrames (FRACTIONS, вращениеValues));
«translationValues» было бы массивом углов (например, 20 углов), полученных из Выше метода shorttestAngleUsing () путем деления его на 20 значений интерполяции.
Для «ФРАКЦИЙ» я не совсем понял, как их получить.
Вот как раньше работало вращение, но я уверен. вращение теперь не поддерживается в MarkerOptions.
MarkerOptions markerViewOptions = new MarkerOptions();
markerViewOptions.position(new LatLng(data.getLat(), data.getLon()));
markerViewOptions.icon(getMarkerIcon(trackingViewData.mKey));
//markerViewOptions.rotation(mIsGroupMembersTracking ? 0 : data.getHeading());
Есть какие-нибудь идеи о том, как можно исправить мерцание значка автомобиля и добиться плавного вращения при повороте?