Google Map v2 Маркерная анимация

Кто-нибудь знает, как реализация этой анимации возможна в google map api v2. Посмотрите здесь. Я хотел бы знать, как это делается. Пожалуйста, дайте мне знать, если у кого-нибудь есть пример кода по этому поводу.

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


person GrIsHu    schedule 20.12.2012    source источник
comment
@GrlsHu. привет .. мне нужна твоя помощь пожалуйста   -  person Piyush    schedule 20.12.2013
comment
Для анимации ломаных маршрутов github.com/amalChandran/google-maps-route-animation   -  person amalBit    schedule 13.01.2017


Ответы (3)


Я нашел решение, которое мне подошло:

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
        }
    }
});
person D-32    schedule 05.02.2013
comment
Интерполятор интерполятор = новый LinearInterpolator(); Эта строка выдает ошибку... Несовместимый тип - person Keval Patel; 25.08.2015
comment
убедитесь, что вы импортируете: import android.view.animation.Interpolator; импортировать android.view.animation.LinearInterpolator; А не другой Интерполятор. - person apmartin1991; 09.10.2015
comment
я нашел ошибку. Необходимо добавить две строчки: if (elapsed›duration) elapsed=duration; - person Master; 23.08.2016

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

person CommonsWare    schedule 20.12.2012
comment
Не могли бы вы предоставить код, чтобы я мог лучше понять реализацию. Я попытался анимировать карту с помощью метода CameraUpdateFactory.scrollBy. Он даже работает нормально. Но не нашел способа анимации пути на карте. - person GrIsHu; 20.12.2012
comment
@Grishu: Не могли бы вы предоставить какой-нибудь код, чтобы я мог лучше понять реализацию - у меня нет ничего, что могло бы справиться с вашим сценарием. Но не найдено никакого способа анимации пути на карте - вам нужно найти путь на карте самостоятельно, используя какой-либо веб-сервис (предположительно), а затем обновить позиции Marker, чтобы они были различными точками на этом пути. - person CommonsWare; 20.12.2012
comment
Хорошо, спасибо за вашу помощь. - person GrIsHu; 20.12.2012

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

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

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

person GCT    schedule 01.02.2013