8

У кого-нибудь есть представление о возможности реализации этой анимации в google map api v2. Check out this here. Я хотел бы знать, как это делается. Пожалуйста, дайте мне знать, есть ли у кого-нибудь пример кода.Google Map v2 Маркер Анимация

Заранее спасибо.

+0

@GrlsHu. привет. Мне нужна ваша помощь – Piyush

+0

Для анимации маршрутов полилинии github.com/amalChandran/google-maps-route-animation – amalBit

ответ

9

Я нашел solution, который работал для меня:

final LatLng target = NEW_LOCATION; 

final long duration = 400; 
final Handler handler = new Handler(); 
final long start = SystemClock.uptimeMillis(); 
Projection proj = map.getProjection(); 

Point startPoint = proj.toScreenLocation(marker.getPosition()); 
final LatLng startLatLng = proj.fromScreenLocation(startPoint); 

final Interpolator interpolator = new LinearInterpolator(); 
handler.post(new Runnable() { 
    @Override 
    public void run() { 
     long elapsed = SystemClock.uptimeMillis() - start; 
     if (elapsed > duration) { 
      elapsed = duration; 
     } 
     float t = interpolator.getInterpolation((float) elapsed/duration); 
     double lng = t * target.longitude + (1 - t) * startLatLng.longitude; 
     double lat = t * target.latitude + (1 - t) * startLatLng.latitude; 
     marker.setPosition(new LatLng(lat, lng)); 
     if (t < 1.0) { 
      // Post again 10ms later. 
      handler.postDelayed(this, 10); 
     } else { 
      // animation ended 
     } 
    } 
}); 
+0

Интерполятор-интерполятор = новый LinearInterpolator(); Эта строка дает ошибку ... «Несовместимый тип» –

+0

убедитесь, что вы импортируете: import android.view.animation.Interpolator; импорт android.view.animation.LinearInterpolator; И не другой Интерполятор. – apmartin1991

+0

Я нашел ошибку. Необходимо добавить эти две строки: \t \t \t \t \t \t если (истекшее> продолжительность) \t \t \t \t \t \t \t истекшее = продолжительность; – Master

7

В любой момент можно изменить позицию Marker по телефону setPosition(). Вы можете изменить положение «камеры» (т. Е. Центра карты и уровня масштабирования) в любой точке, применив объект CameraUpdate, используя moveTo() или animateTo() по адресу GoogleMap. Объединение их со световой синхронизацией (например, с использованием postDelayed()) должно позволить вам достичь аналогичного эффекта анимации.

+0

Можете ли вы предоставить какой-то код, чтобы я мог лучше понять реализацию. Я попытался анимировать карту, используя метод CameraUpdateFactory.scrollBy .. ее работа отлично. Но не нашел способа анимации на пути на карте. – GrIsHu

+1

@Grishu: «Можете ли вы предоставить какой-то код, чтобы я мог лучше понять реализацию» - у меня нет никакой лжи, которая обрабатывает ваш сценарий. «Но не нашли способ анимации на пути на карте» - вам нужно найти «путь на карте» самостоятельно, используя некоторые веб-службы (предположительно), а затем обновить позиции «Маркер», чтобы быть разными точками по этому пути. – CommonsWare

+0

Хорошо, спасибо за вашу помощь. – GrIsHu

0

Отличная новость заключается в том, что он API Google Map API v2 предоставляет новые элементы управления камерой. Вы можете проверить новые функции и как их использовать непосредственно here на канале Youtube команды разработчиков Android.

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

Удачи и дайте мне ссылку, когда вы закончите свое приложение.

Смежные вопросы