Anyway, you can download each tile as image to local internal or external storage with, for example, Picasso library (or separate Thread
or AsyncTask
) and determine "all new tiles are downloaded" event "manually" (e.g. increment downloaded tiles counter on every public void onSuccess()
for Picasso or protected void onPostExecute()
for AsyncTask
or on end of public void run()
for Thread
and wait that equals all tiles quantity) then use TileProvider
for downloaded tiles local storage like in this answer of Alex Vasilkov.
Update
For showing previous map when tiles for zoom+1 level still downloading it's possible to create GroundOverlay
with screenshot of current map view. Screenshot of google map you can do like in answers for this question of DiscDev
Update #2
There are several ways to solve you problem: 1) you can create custom view which extends MapView
class like in this answer and show in overridendispatchDraw()
method whatever you want or 2) you can set ImageView
over your MapView
and show it with screenshot on it while zoom changed and new tiles loaded. And if necessary you can translate tap events from ImageView
to MapView
and so on.
I prefer p.1 - create MapView
-based custom view, override dispatchDraw()
and show temporary map within it while new map loading.