Is there a reason to limit the prefetch depth? Why not allow the user the ability to download to any depth?I limit depth because of the 4x factor that increasing zoom levels represents. When I say that I pre-fetch the next lower N zoom levels, it means the ENTIRE area expanded by 4x for each zoom level closer. Many times, this is not what the user really wants to see in detail. For instance, why pre-fetch lots of ocean tiles just because the lower left corner of the United States happens to be a peninsula?
I would entertain going deeper if the prefetch constrained itself to the same are that would be viewed by zooming in at the current screen size, but again, that's probably not what most users are looking for. Once you get in to a certain area, they really want the 4x expansion as it goes deeper.
My own manual method is to get a reasonable area at a reasonable zoom and trigger the prefetch. I then zoom in 2 or 3 times and pan around triggering more prefetches until I think I've got enough queued. Then I zoom in to a reasonable street level and pan around slowly while watching for the fuzziness to disappear. At my origination and destination points, I zoom in really deep to have the final detail and/or back off 1 or 2 levels and trigger a final few prefetchs.
The client does do some automatic prefetching of one zoom level further out and the 4 tiles one level closer (along with one additional tile at the current zoom level out each edge of the screen) each time a new tile is fetched from the server. This is in anticipation of traveling into those areas or doing a small zoom for less or more detail.
Note that the automatic prefetchs of map tiles due to panning and zooming are canceled if your attention has moved elsewhere (by more panning and zooming) before the tiles were fetched. Manual Prefetch requests are not canceled nor cancellable short of closing the client.
In other software I have, the user selects the zoom levels for tile retrieval.So you know if that software holds to the same screen size on the retrieval or actually expands the 4x to ensure fully detailed coverage for the entire originally viewed area? I'm suspecting the former where I do that latter.
I was also thinking the ability to prefetch all tiles below the current level when the map is moved is possibly useful. Obviously this can be very time and space consuming. But if the user could select the levels he/she needed, then only the levels select would be fetched.See above for the automatic prefetch that has been in the client from day 1 (of OSM support anyway). These automatic prefetches are not guaranteed to be attempted, though, if you keep panning and zooming around. "All" is a very data-intensive word when dealing with the 4x expansion.
One reason this is useful to me is that I run a GPS simulator and have been retrieving tiles automatically. This has been useful so far in getting tiles for areas that I am interested in (mainly traveling to and from and though) and it would allow a single pass.If you slow the GPS simulator down so that it doesn't force panning before the queue has worked off (yellow circle expands to disappear), it will at least have pre-fetched one level down and one level up from the current zoom view.
Lynn (D) - KJ4ERJ
PS. I've got a ToDo to use HTTP/1.1 for tile retrieval that reduces the load on the network and tile server. I'll consider these suggestions after I've been able to do that. I don't want my client to become persona non grata (http://en.wikipedia.org/wiki/Persona_non_grata) on the OSM tile servers.