Relative Auto-Zoom and Configuration
I have been thinking for some time about how to make Auto-Zoom more flexible while minimizing configuration settings. I propose the following changes, which are described below:
• Make Auto-Zoom relative to the current zoom level, instead of using preset levels;
• Add two simple configuration numbers to the Car/Bike/Foot profiles.
Based on experience and on previous discussions, I do not think there is a set of preset zoom levels which can satisfy all users and all screen sizes in all situations (even within one profile). For example, between 31 and 63 mph (50-100 km/h), Auto-Zoom in Locus 3.11.3 shows me about 35 seconds of travel time ahead. (Doubling the speed zooms out by one level, which doubles the distance on screen, so travel time is constant). For some users this may be fine. However, I prefer a longer (time) view ahead at high speeds, which requires faster zoom out
Furthermore, different situations may require different zoom levels for the same speed. I may want a more detailed view when negotiating exit ramps left and right around Cleveland, but a broader view with upcoming rest stops and gas stations when driving through rural Michigan at the same speed.
First, I propose that Auto-Zoom should not use preset zoom levels at all. Instead, it should zoom in or out relative to the last user-selected zoom level. For example, if I am stopped and select zoom level 17, then when I start moving Auto-Zoom would zoom out from level 17. If I am driving at 50 mph (80 km/h) and select zoom level 11, then slowing down would zoom in from level 11, and speeding back up to 50 mph would zoom back out to level 11.
This approach would let me set the view as needed for a change in situation, just by tapping the (-) and (+) zoom buttons. After that, Auto-Zoom would adjust that view for speed changes, rather than resetting it. There would be no need to temporarily disable Auto-Zoom, which can be tricky while moving.
Second, we need to control whether a change in speed zooms in a little or a lot. I propose the following two settings for Auto-Zoom in each profile (Car/Bike/Foot):
- One level every [ <speed> ] mph or km/h
- Two levels above [ <speed> ] mph or km/h
For example, if I set the first to 10 mph and the second to 40 mph, then Auto-Zoom would change by one level at 10, 20, 30, and 40 mph, and by two levels at 50 mph, 60 mph, and so on (with smooth zooming between levels as usual).
Changing the level at equal speed increments provides a modest increase in travel time on screen at higher speeds. For example, if I set "One level every  mph" and "Two levels above  mph" (i.e. no 2-level changes), then my screen would show roughly the following times:
• 20-40 mph: 30 seconds
• 55 mph: 35 seconds
• 65 mph: 45 seconds
• 75 mph: 55 seconds
• 85 mph: 1 minute
See attachment 'Slow Zoom.png'.
Changing at smaller intervals and/or by two levels increases the displayed travel time faster. For example, if I set "One level every [15.5] mph" and "Two levels above  mph", then my screen would show roughly:
• 20-40 mph: 35-45 seconds
• 55 mph: 1 minute
• 65 mph: 2.5 minutes
• 75 mph: 5 minutes
• 85 mph: 10 minutes
See attachment 'Fast Zoom.png'.
I have attached an example of settings I might use for walking, and one showing what I think is equivalent to the "Car" profile settings in 3.11.3. There is also an Excel spreadsheet for those who want to experiment with other screen sizes, settings, and zoom levels. Settable fields are bold black font. Apologies to metric users; inputs are mostly English units, with equivalent metric shown to the right. You can enter 50 km/h as a formula "=50/kpm". If you unprotect the sheet, you can change the graph's X axis to the Km/h column.
MAP AND DISPLAY RESOLUTION
Smooth Auto-Zoom in 3.11.3 already maintains the user's Map Resolution setting. No additional corrections for screen size or DPI should be needed, because the user will have set Map Resolution and zoom level to account for them.
From other discussions, I infer that the code uses a table which maps from speed to auto-zoom level. That table could be initially generated from the two configuration parameters, rather than being static. Then when the user manually selects a zoom level, code could adjust the level numbers in the table up or down so that the current speed maps to the manually selected level.
• Personally, I think Auto-Zooming from the current level would be more intuitive than using preset levels.
• A user can easily select a range of Auto-Zoom for various situations while moving.
• If I manually zoom way in to look at a detail or way out for an overview of the route, then Auto-Zoom won't reset the view while I'm still looking at it.
• The two configuration parameters support a wide variety of zooming rates, from gentle to aggressive.
• The two configuration parameters are easy to understand (at least I think so).
• No code needed to adjust for screen size and resolution.
• No more change requests for the speed-to-level mapping. B-)
• If I manually zoom way in to look at a detail or way out for an overview of the route, then getting back to my usual traveling zoom level requires multiple taps, probably while looking at the screen.
• At speeds near the "One level every" setting, speeding up can actually decrease the travel time on the screen as the distance increases. The effect looks smaller than what you would get with Auto-Zoom off -- around 30 seconds for driving speeds and one minute for walking speeds -- so I don't think it's a significant problem.
This would be a pretty basic change to how Auto-Zoom behaves, so please comment!