У меня есть список с кучей LatLng
. Мне нужно анимировать маркер из одной позиции в другую, пока не закончится список (конечная точка).
Я использую интерполятор (что-то вроде этой реализации из @ CommonsWare введите описание ссылки здесь ), чтобы анимировать маркер от позиции к другой. В то же время я также создаю полилинию с сгенерированными точками.
С учетом вышесказанного у меня есть рабочее решение. Если для карты задано максимальное увеличение (21f
) и даже если интерполятор выдает результаты со скоростью, превышающей 16ms
, добавление ломаной линии и маркера в новой позиции не влияет на интерфейс пользователя, то есть на как могут видеть мои глаза, это очень гладко. Конечно, в какой-то момент маркер выходит за пределы экрана, и мне приходится перемещать карту пальцем, чтобы отслеживать движение маркера и полилинии.
Теперь я хочу, чтобы маркер оставался всегда в центре экрана, поэтому карта должна двигаться.
Я пытался использовать map.moveCamera
и map.animateCamera
, но иногда интерфейс становился немного вялым. Я вижу, что маркер движется не так плавно, как раньше. Это использует map.moveCamera
, потому что с map.animateCamera
у меня даже худшие результаты.
В функции, которую ObjectAnimator
вызывает каждый раз, когда она интерполирует точку, я делаю это:
public void onNewPosition(LatLng newPosition){
marker.setPostion(newPosition);
map.moveCamera(marker.getPosition())
}
Если я оберну вышеупомянутое в if
состоянии, чтобы проверить, больше ли время, прошедшее с предыдущего вызова на этот, чем 16ms
, у меня все еще есть некоторый вялый пользовательский интерфейс.
Я определил проблему в движении карты. Не знаю, если дело в том, что пользовательский интерфейс не может визуализировать движение карты и движение маркера одновременно, таким образом, кажется, что иногда маркер перемещается, а карта - нет, а в других случаях наоборот (не не знаю, прав я или нет)
Любая идея о том, как я могу одновременно переместить карту и маркер или другое решение, которое удовлетворяет моим потребностям, то есть переместить маркер и карту так, чтобы пользователь воспринял, что маркер движется, но остается в центр экрана, в то время как карта ниже выполняет требуемое движение?
Спасибо.