Android: отслеживание местоположения автомобиля при движении по карте - PullRequest
0 голосов
/ 22 января 2020

Я отслеживаю местоположение автомобиля, пока он движется по карте. Автомобиль движется нормально. Однако моя проблема в том, что значок автомобиля мигает. Например, делая поворот, он делает крутой поворот вместо плавного поворота. Это вертится вокруг. Существует проблема ротации. Я использую 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());

Есть какие-нибудь идеи о том, как можно исправить мерцание значка автомобиля и добиться плавного вращения при повороте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...