как поставить индикатор выполнения вокруг маркера карты (автомобиль) - PullRequest
0 голосов
/ 11 января 2020

enter image description here

Я хочу сделать индикатор прогресса вокруг маркера карты Google, например, как это изображение, или как отобразить индикатор выполнения с указанной c позицией на карта, как я говорю широту и долготу и отображает с этой позиции

1 Ответ

0 голосов
/ 12 января 2020

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

Значок маркера - это все (автомобиль + маркер + круг + прогресс) и значок дублирован в 9 файлах с измененными кругами прогресса.

Я могу опубликовать детали, если это представляет интерес, но сводка такова:

  • Создайте столько изображений маркеров, сколько имеется состояний прогресса (в данном примере 9)
  • Периодически обновляйте прогресс, меняя значок маркера, соответствующий значку progress (с шагом 1/8 в этом примере)
  • Мигание выполняется с использованием задержки обработчика и по существу переключается между icon0 (кружки не заполнены) и текущим значком (на основе вычисления прогресса).
  • маркер перемещается вместе с местоположением в этом примере, просто используя .setPosition().

Вот реализация обработчика для предоставленного примера:

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
 boolean onOff = false;
 @Override
 public void run() {
     // imageId is set in the onLocationChanged based on 'progress'
     // determination - 0/8 complete; 1/8 complete...
     int currentImageId = imageId;

     // icons is an array list populated at initialization with 
     // BitmapDescriptors from resources - one for each progress
     // fraction (0 - 8).
     BitmapDescriptor currentIcon = icons.get(currentImageId);

     // Flashing results from using the "0-progress" indicator icon
     // which is at index 0.
     BitmapDescriptor offIcon = icons.get(0);

     if (onOff) {
         marker1.setIcon(offIcon);
     } else {
         marker1.setIcon(currentIcon);
     }
     onOff = !onOff;

     // restart handler timer.
     handler.postDelayed(this, 500);
 }
}, 100);

Инициализация списка значков выглядит следующим образом:

// repeat for all progress images
final BitmapDescriptor icon0 = BitmapDescriptorFactory.fromResource(R.drawable.car0);

// and add to list
final ArrayList<BitmapDescriptor> icons = new ArrayList<>();
// repeat for all progress images
icons.add(icon0);

Настройка происходит в " определение прогресса "- если вы путешествуете по маршруту, тогда в onLocationChanged вычисляется коэффициент завершения пути и применяется к максимальному количеству изображений для получения вышеуказанного imageId. Например:

int imageId = pathCompleteRatio * maxImages;

Видео enter image description here

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