Масштабирование и анимация, чтобы указать карту просмотра Android

Поэтому в моем текущем приложении я хочу увеличить широту / долготу, а также использовать animateTo (или его эквивалент), чтобы убедиться, что экран правильно отцентрирован. В настоящее время я просто делаю что-то вроде этого:

_mapController.animateTo(new GeoPoint(googleLat, googleLng));


            // Smooth zoom handler
            int zoomLevel = _mapView.getZoomLevel();
            int targetZoomLevel = AppConstants.MAP_ZOOM_LEVEL_SWITCH;
            long delay = 0;
            while (zoomLevel++ < targetZoomLevel) {
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                       _mapController.zoomIn();
                    }
                }, delay);

                delay += 350; // Change this to whatever is good on the device
            }

Это работает, но происходит то, что мой поток запускается, ДО того, как заканчивается "animate to", поэтому он увеличивает и затем "прыгает" для отображения правильного центра geoPoint. Есть ли способ плавно "развернуть" до определенного уровня масштабирования, а также перейти к географической точке одновременно? Подобно тому, как официальное приложение Googl eMaps увеличивает адрес после того, как вы его искали, я и собираюсь сделать это.

1 ответ

Решение

Я хотел бы сделать что-то вроде:

_mapController.animateTo(new GeoPoint(googleLat,googleLong), new Runnable() {
 public void run()
 {
  _mapController.zoomIn ();
 }
});

Это обеспечит эффект панорамирования и масштабирования. Вы можете попробовать ту же логику внутри runnable для выполнения многошагового увеличения.

Другие вопросы по тегам