Finish implementing overzooming
Overzooming, or scaling and cropping tiles from a lower zoom level, is useful for:
- Maps with more than one layer, where the max zoom for one tile source is lower than the max zoom for the other layer. For example, an MBTiles heat map which ends at zoom 10 and a street map which ends at zoom 17. See https://github.com/mapbox/mbxmapkit/pull/20#issuecomment-34297670
- Zooming in to distinguish between markers which are close together, or perhaps to see detail in a GPS track. For example, consider a street map which ends at zoom level 16 and markers for two businesses which are only 20 feet apart on the ground. The ability to zoom in to level 17, 18, etc would make it easier to tap on the correct marker.
- 3D maps which render tiles from a range of zoom levels in perspective on the same map. See #35
I presently have a partial implementation for this (MBTiles on iOS only) over at https://github.com/wsnook/mbxmapkit/tree/issue35. However, that uses image manipulation code that probably won't compile on OS X.
Before this is ready to use, it will need to be adapted to work for online tiles, and it will need to be adapted and tested for OS X.
Do you think this is a good chunk of work and should wait until after 0.2.0? Or relatively smaller scale?
I think it should be pretty easy. The main blocker for me is that I need to sign up for a Mac Developer Program membership to make any progress on the OS X side.
The one catch is that, for online tiles, this will need to mess with loadTileAtPath:result. A whole lot of potential changes involve that function, so they need to be coordinated to some extent. That's why I ended up doing things the way I did with merging a giant pile of stuff into pull request #38. The branching was just starting to get too crazy.
For example, I think it would be cool to implement a good ~~offline~~ cache manager (dictionary of persistent regions so they can be both requested and released, an option for performance boosting only, and options to manipulate the cache for development). If you want to tackle that, it would be nice to figure out which change goes first so that branching and merging doesn't lead to a ton of annoying conflicts in loadTileAtPath:result.
The main blocker for me is that I need to sign up for a Mac Developer Program membership to make any progress on the OS X side.
I'll add you to ours. Invite incoming.
@incanus, It's possible I may have misunderstood what you meant here, see https://github.com/mapbox/mbxmapkit/pull/38#issuecomment-35472752.
To hopefully be a bit more clear, I think that work on this issue should be paused until the dust settles from pull request #38. If you intend for #38 to be equivalent to milestone 0.2.0, then I think this issue should be a part of the next milestone after that one.
Yeah, I am thinking we skip a possible 0.1.1 and go straight to 0.2.0 given that it contains some new functionality. Overzooming and fixing #35 as a result can wait until the next release, then.
This can wait until after 0.3.0
When we zoom in beyond level 18 with a satellite map in our app, MBXRasterTileOverlay currently returns dark grey tiles with light grey title center points and other features. Will implementing overzoom resolve this issue? If so, this would be a high priority for us. And likely a high priority for other developers displaying satellite map data.
Yes, the idea of overzooming is that lower-numbered tiles would be magnified (albeit blurry) to still show content.
@incanus or @incanus Can you clarify the timing for this work? I see that it's intended for the 0.3.1 release. Has a release date been set for 0.3.1? Is that the primary focus for the team now? We can't take development ownership for this issue, but it is important for us in the near-term and we can offer extensive testing support.
This project is somewhat back-burnered for a bit as we focus more on Mapbox GL native & JS. So, no release date as of yet on 0.3.1 or overzooming.
I've got overzoom working in this branch: https://github.com/Rowjo/mbxmapkit/tree/over-zoom
My implementation uses UIKit, so needs work to support OSX too. Also, I only have access to new iOS devices and have not tested on anything older than a iPhone 5s. @incanus , @wsnook - I'm happy to implement the OSX code if this would be helpful?
If you're able to, that would be great @Rowjo, but it's not a main focus of the project anymore.
@incanus Ok, I'll get this done soon. What's does the future of this project hold? Will you be continuing support or phasing it out to be replaced with Mapbox GL?
Here's the best guidelines we have on that @Rowjo: https://github.com/mapbox/mapbox-gl-cocoa/blob/master/FAQ.md
Thanks @incanus