Improve and simplify Mercator layers management #847
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of the Changes
Refactor MercatorTiledImageLayer to include all general initialization, such as: sector, zero level delta, display name, image size, detectBlankImages and mapSizeForLevel calculation into parent constructor. This makes child layers avoiding unnecessary copy-paste code.
Added first level offset parameter which allows to skip several top levels to avoid displaying one tile over whole globe.
Added alternative way of determining tile URL by overriding getImageSourceUrl function. This allows to create additional online layers by setting several parameters in constructor and overriding one function with URL builder instead of separate URL builder creation.
Why Should This Be In Core?
This feature simplify adding new typical online layers such as Google, OSM, OTM. Wiki, etc by only specifying core parameters without unnecessary copy-paste of the same logic.
This approach already implemented in Java and will be implemented in Android.
Benefits
Simple Mercator online sources creation.
Potential Drawbacks
Less flexibility of constructor.