В любом случае, вы можете загрузить каждую плитку как изображение в локальное внутреннее или внешнее хранилище с, например, библиотекой Picasso (или отдельной Thread
или AsyncTask
) и определить«все новые плитки загружены» событие «вручную» (например, увеличить счетчик загруженных плиток на каждый public void onSuccess()
для Пикассо или protected void onPostExecute()
для AsyncTask
или в конце public void run()
для Thread
и ждать, равное количеству всех плиток) затем используйте TileProvider
для локального хранилища загруженных плиток, как в этот ответ Алекс Васильков .
Обновление
Для отображения предыдущей карты, когда плитки для увеличения + 1 уровень еще загружаются, можно создать GroundOverlay
со скриншотом текущего вида карты.Снимок экрана карты Google вы можете сделать как в ответах на этот вопрос DiscDev
Обновление # 2
ЕстьЕсть несколько способов решить вашу проблему: 1) вы можете создать пользовательское представление, которое расширяет класс MapView
, как в этом ответе, и показывать в переопределенном методе dispatchDraw()
все, что вы хотите, или 2) вы можете установить ImageView
поверх вашего MapView
и покажите его со скриншотом, когда изменен масштаб и загружены новые плитки.А при необходимости вы можете переводить события касания из ImageView
в MapView
и так далее.
Я предпочитаю стр.1 - создать пользовательский вид на основе MapView
, переопределить dispatchDraw()
и показывать временную карту в нем при загрузке новой карты.