Intereting Posts
Прокрутка сетки во время перетаскивания элемента (как тень) Как получить ссылку на активность в классе View? Просмотр списка андроидов Как узнать, какое намерение выбрано в Intent.ACTION_SEND? Java.lang.IllegalStateException: Не удалось прочитать строку x col x из CursorWindow. Убедитесь, что курсор инициализирован правильно. Контакты В HTML5, как я могу включить экран Android-устройства? Плагин Eclipse и модификация ADT для интеграции API в меню «Создать проект» «Произошла внутренняя ошибка» с интеграцией входа в Google Plus База данных не копируется должным образом в OnePlus Two Шрифт Roboto для Android 4+? Как сделать полноэкранный просмотр в Интернете После обновления Android Studio до версии 1.3.0 я получаю «NDK-интеграция устарела в текущем плагине». Ошибка Android View исчезает, когда выходит за пределы родителя Что такое метод удобства в Java? Как отличаются действия popBackStack () и replace ()?

Android: Google MapView показывает индикатор прогресса во время загрузки карты

Есть ли способ прослушивания, если MapView все еще загружается? Потому что я хочу показать индикатор прогресса (например, песочные часы), в то время как MapView загружает фрагменты карты.

Любое решение?

Solutions Collecting From Web of "Android: Google MapView показывает индикатор прогресса во время загрузки карты"

Документация onDraw для MapView говорит

«Мы рисуем фон карты (загружая плитки в зависимости от ситуации)»

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

Вы можете использовать OnCameraChangeListener и OnMapLoadedCallback для имитации этого поведения.

Из документации GoogleMap.OnCameraChangeListener :

Public abstract void onCameraChange (позиция CameraPosition)

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

Это называется основной нитью.

Из документации GoogleMap.OnMapLoadedCallback :

Public abstract void onMapLoaded ()

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

Как указано там, onMapLoaded() будет вызываться только один раз, поэтому стратегия может заключаться в том, чтобы запрашивать один onCameraChange GoogleMap.OnMapLoadedCallback каждый раз, когда onCameraChange .

Вот пример (очень простой), чтобы проиллюстрировать ответ:

 public class MapsActivity extends FragmentActivity implements OnCameraChangeListener, OnMapLoadedCallback { private GoogleMap googleMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); googleMap = mapFragment.getMap(); googleMap.setOnCameraChangeListener(this); } @Override public void onMapLoaded() { //TODO: Hide your progress indicator } @Override public void onCameraChange(final CameraPosition cameraPosition) { googleMap.setOnMapLoadedCallback(this); //TODO: Show your progress indicator } } 

В текущей реализации MapView нет прямого API для этого.