Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v10: Improved multi-store usage support #156

Merged
merged 103 commits into from
Jan 11, 2025
Merged

Conversation

JaffaKetchup
Copy link
Owner

@JaffaKetchup JaffaKetchup commented May 24, 2024

This PR builds on v9, and fully embraces the new many-to-many relationship between tiles and stores to allow for more flexibility when constructing the tile provider.
This allows full & easy support for the ideas in #24 and #83: stores may now be treated as regions if wanted, which allows huge amounts of flexibility and a better UX.

Additionally, vector tiles are now supported in theory, as the internal caching/retrieval logic of the ImageProvider has been exposed, although it is out of scope to fully implement support for it.

See CHANGELOG for full details.

(fixes #24)
(fixes #83)
(fixes #84)

…leProvider`

Replaced `FMTCTileProviderSettings.maxStoreLength` with `maxLength` on each store individually
Exposed direct constructor for `FMTCTileProvider`
Refactored and exposed tile provider logic into seperate `getBytes` method
Added more `CacheBehavior` options
Added toggle for hit/miss stat recording
Added tests
Improved documentation
Added internal `_DownloadManagerControlCmd` enum to better describe commands sent to/from the download manager thread (instead of numbers)
Refactored download recovery startup to avoid waiting for manager thread to send already known information
Refactored `RootRecovery` singleton instance mangement to be class-internal
…y update when buffer cleared)

Improved performance of bulk download thread buffer trackers
Added `StoreReadWriteBehavior` for improved customizability
Deprecated `obscuredQueryParams`
Added `urlTransformer` & `urlTransformerOmitKeyValues` [as replacement for above
Refactored `_FMTCImageProvider` internals
Added `DebuggingTileBuilder` to example app
Fixed bugs
Improved performance of circle tile generation algorithm
*Reduced* performance of circle tile count algorithm
Improved performance of tile generation algorithms with specified `end`s
Documentation improvements
Added checks to ensure store exists before attempting to write to it
Improved key correctness for image provider
Deprecated `FMTCStore.getTileProvider`
Improved documentation
Minor example app improvements
@JaffaKetchup JaffaKetchup marked this pull request as ready for review January 2, 2025 23:22
@JaffaKetchup JaffaKetchup merged commit b9aaf09 into main Jan 11, 2025
8 checks passed
@JaffaKetchup JaffaKetchup deleted the multi-store-provider branch January 11, 2025 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment