Repository navigation
Releases
5.2.0-beta.1
Before you upgrade
SkiaSharp 4 can now be used, as an opt-in. Mapsui itself still builds against SkiaSharp 3.119.4. To use SkiaSharp 4, reference it explicitly in your own project. This is supported for MAUI and Avalonia 12.
On Avalonia 12.1 with SkiaSharp 4, use ANGLE, not Vulkan. The Vulkan backend crashes with SkiaSharp 4. ANGLE renders correctly.
.NET 8 is no longer supported in some packages. Mapsui.UI.Wpf, Mapsui.UI.WinUI, Mapsui.UI.WindowsForms, Mapsui.UI.Blazor and Mapsui.UI.Android now target .NET 9 only, because SkiaSharp dropped its .NET 8 assets in 3.119.4. Mapsui.UI.Avalonia, Mapsui.UI.Avalonia12, Mapsui.UI.Eto and Mapsui.UI.Maui8 still support .NET 8; Maui8 stays on SkiaSharp 3.119.2 for that reason.
What's Changed
🐛 Fixes
- fix: guard EndEdit against polygons with fewer than three points by @SAY-5 in #3371
- fix: Prevent DataFetcher ObjectDisposedException on early disposal by @pauldendulk in #3391
- fix: Keep stable touch order on iOS to prevent rotation flips by @pauldendulk in #3397
- fix: Use culture-invariant string casing, comparison and parsing by @pauldendulk in #3399
- fix: Read image URL responses asynchronously so they load in Blazor WebAssembly by @pauldendulk in #3400
- fix: Use GenerationId as path cache key for lines and polygons by @pauldendulk in #3402
🚀 Features
- feat: add VisibilityMargin to BaseLayer by @pauldendulk in #3369
- update: Move to SkiaSharp 3.119.4 and prepare for SkiaSharp 4 by @follesoe in #3380
- feat: Add selectable MAUI backends and Android SurfaceView by @pauldendulk in #3395
♻️ Refactor
- refactor: streamline invalid edit cancellation and rename PR skill by @pauldendulk in #3372
- refactor: Make touch order explicit in MAUI and Avalonia MapControl by @pauldendulk in #3398
📦 Updates
- update: Support SkiaSharp 4 in MAUI and Avalonia 12 consumers by @pauldendulk in #3390
⚡Performance
- perf: Cache fonts used by Skia renderers by @pauldendulk in #3387
🛠️ Chore
- chore: Add Mapsui logo assets by @pauldendulk in #3374
- chore: Make agent tooling vendor-neutral by @pauldendulk in #3388
🧪 Samples
- sample: Add Skia scene matrix sample by @pauldendulk in #3396
📝 Documentation
- Migrate Pages deployment to a frozen v4 artifact by @pauldendulk in #3377
- docs: Update sponsors in the README by @pauldendulk in #3382
New Contributors
Full Changelog: 5.1.0...5.2.0-beta.1
Frozen Mapsui v4 website
Immutable snapshot of https://mapsui.com/v4/ used by the GitHub Pages deployment workflow.
Source: gh-pages commit 697b9a4, directory v4
Files: 1,114
SHA-256: 4d2bc8b58df9a8523f95203a8dddf5ca7a63895e25cf767d6b603602d30b78e1
This asset replaces rebuilding the archived develop/4.1 documentation. Do not replace the asset in place; publish a new tagged snapshot and update the reviewed manifest instead.
5.1.0
What's Changed
🐛 Fixes
- Add optional ITileSchema to RasterizingTileLayer by @pauldendulk in #3274
- Remove RefreshGraphics calls that are not necessary by @pauldendulk in #3293
- Fix MAUI MapControl memory leak (SKGLView not released after navigation) by @MereDoku in #3273
- fix: unblock invalidation loop when paint fires before view is laid out by @pauldendulk in #3349
- fix: deferred disposal to prevent race condition on drawable cache eviction by @pauldendulk in #3352
- fix: DrawTextOnPath renders tofu square between words in street labels by @pauldendulk in #3354
- fix: clamp mouse wheel accumulator to prevent stuck zoom direction on Avalonia WASM by @pauldendulk in #3356
- fix: prevent duplicate concurrent fetches and white images in RasterizingLayer by @pauldendulk in #3357
- fix: call RefreshGraphics in MouseCoordinatesWidget on pointer move by @pauldendulk in #3360
- fix: correct VectorCache capacity and CacheHolder instance pooling by @pauldendulk in #3361
- fix: add Avalonia12 to release solution filter by @pauldendulk in #3366
🚀 Features
- Allow bigger margin on DataFetchStrategy by @pauldendulk in #3277
- Improve VexTile VectorTiles by avoiding PNG compression and decompression by @pauldendulk in #3283
- Return null if there is no data to avoid drawing empty tiles in RasterizingTileLayer by @pauldendulk in #3288
- Add properties for passing additional HTTP headers to requests. by @MLipfert1 in #3282
- Add Map.RefreshDataAsync by @pauldendulk in #3302
- Partial graphics update by @pauldendulk in #3305
- Implement 'FontSource' - A way to load a font of choice by @pauldendulk in #3308
- Support AnimatedFeature for Layer and add gps track sample by @pauldendulk in #3311
- Improve experimental rendering related to FontSource changes by @pauldendulk in #3315
- Fallback to higher level tiles if tiles are missing in the source data while avoiding re-fetches by @pauldendulk in #3321
- Add support for CustomLayerRenderer in the RasterizingTileSource by @pauldendulk in #3320
- ☢️ Add screen-space coordinate support to partial refresh by @pauldendulk in #3330
- Add GridLayer by @pauldendulk in #3333
- ☢️ Add custom font loading through FontSource for widgets by @pauldendulk in #3335
- feat: add image comparison tool with overlay diff and colour picker by @pauldendulk in #3358
- feat: add continuous mouse wheel zoom to Navigator by @pauldendulk in #3367
📦 Updates
- Add Mapsui.UI.Avalonia12 project targeting Avalonia 12 by @pauldendulk in #3343
- Upgrade Uno SDK to 6.5.31, drop .NET 8 TFMs, add Mapsui.Samples.Uno5 by @pauldendulk in #3345
- Update SkiaSharp to 3.119.2 and HarfBuzzSharp to 8.3.1.3 by @pauldendulk in #3347
⚡Performance
- ☢️ Improve vector tile as PNG performance by @pauldendulk in #3295
- Optimize performance related to partial graphics update by @pauldendulk in #3312
🛠️ Chore
- Cleanup old test folders by @pauldendulk in #3294
- Add configuration to switch to experimental rendering by @pauldendulk in #3314
- Allow global switching between experimental and regular renderer by @pauldendulk in #3316
- Create Claude.md by @inforithmics in #3324
- Add RTK instructions by @pauldendulk in #3318
- Enable source linking by @hymccord in #3331
- Remove experimental as a release category by @pauldendulk in #3334
- Add Copilot skills for regression tests and RichTextKit by @pauldendulk in #3336
⚙️ Infrastructure
- Add performance section to release.yml by @pauldendulk in #3298
- Add Create Release Tag workflow and releasing docs by @pauldendulk in #3337
🧪 Samples
- Add sample for RasterizingTileLayer using CustomPointStyle rendering a million points by @pauldendulk in #3275
- ☢️ Add samples for VexTile custom style by @pauldendulk in #3326
- Fix samples: regenerate code pages and fix GridLayerSample name by @pauldendulk in #3338
- Add RasterizingTileLayer with CustomLayerRendererSample by @pauldendulk in #3339
- Add clustering sample with ClusteringProvider by @pauldendulk in #3342
- Add Avalonia 12 sample app by @pauldendulk in #3344
📝 Documentation
- Add missing XML documentation for tileSchema parameter by @Copilot in #3276
- Improve documentation by @pauldendulk in #3306
- Add documentation pages for CustomPointStyle and CustomLayerRenderer by @pauldendulk in #3317
- Improve documentation based on questions in the issues by @pauldendulk in #3322
- docs: add Avalonia 12 package guidance to getting-started and NuGet READMEs by @pauldendulk in #3350
- docs: add create-pr skill with title prefix and label conventions by @pauldendulk in #3355
- docs: add 'Working with Layers' documentation page by @pauldendulk in #3359
- docs: split contributors guidelines into three focused documents by @pauldendulk in #3365
New Contributors
- @MLipfert1 made their first contribution in #3282
- @MereDoku made their first contribution in #3273
- @hymccord made their first contribution in #3331
Full Changelog: 5.0.2...5.1.0
5.1.0-beta.10
What's Changed
🐛 Fixes
- fix: add Avalonia12 to release solution filter by @pauldendulk in #3366
📝 Documentation
- docs: split contributors guidelines into three focused documents by @pauldendulk in #3365
Full Changelog: 5.1.0-beta.9...5.1.0-beta.10
5.1.0-beta.9
What's Changed
🐛 Fixes
- fix: prevent duplicate concurrent fetches and white images in RasterizingLayer by @pauldendulk in #3357
- fix: call RefreshGraphics in MouseCoordinatesWidget on pointer move by @pauldendulk in #3360
- fix: correct VectorCache capacity and CacheHolder instance pooling by @pauldendulk in #3361
🚀 Features
- feat: add image comparison tool with overlay diff and colour picker by @pauldendulk in #3358
📝 Documentation
- docs: add 'Working with Layers' documentation page by @pauldendulk in #3359
Full Changelog: 5.1.0-beta.8...5.1.0-beta.9
5.1.0-beta.8
What's Changed
🐛 Fixes
- fix: unblock invalidation loop when paint fires before view is laid out by @pauldendulk in #3349
- fix: deferred disposal to prevent race condition on drawable cache eviction by @pauldendulk in #3352
- fix: DrawTextOnPath renders tofu square between words in street labels by @pauldendulk in #3354
- fix: clamp mouse wheel accumulator to prevent stuck zoom direction on Avalonia WASM by @pauldendulk in #3356
📦 Updates
- Update SkiaSharp to 3.119.2 and HarfBuzzSharp to 8.3.1.3 by @pauldendulk in #3347
📝 Documentation
- docs: add Avalonia 12 package guidance to getting-started and NuGet READMEs by @pauldendulk in #3350
- docs: add create-pr skill with title prefix and label conventions by @pauldendulk in #3355
Full Changelog: 5.1.0-beta.7...5.1.0-beta.8
5.1.0-beta.7
Highlights
- Added Avalonia12 support. Note this is added as a separate new package to not break things for existing users.
- Update: The package released yesterday was incorrectly versioned as 1.0.0 and referenced ancient Mapsui core packages. This is now fixed.
- Updated to the latest Uno 5 SDK. To allow this we had to remove net8 support, and you may hit a linker issue with Mac Catalyst.
What's Changed
📦 Updates
- Add Mapsui.UI.Avalonia12 project targeting Avalonia 12 by @pauldendulk in #3343
- Upgrade Uno SDK to 6.5.31, drop .NET 8 TFMs, add Mapsui.Samples.Uno5 by @pauldendulk in #3345
⚙️ Infrastructure
- Add Create Release Tag workflow and releasing docs by @pauldendulk in #3337
🧪 Samples
- Fix samples: regenerate code pages and fix GridLayerSample name by @pauldendulk in #3338
- Add RasterizingTileLayer with CustomLayerRendererSample by @pauldendulk in #3339
- Add clustering sample with ClusteringProvider by @pauldendulk in #3342
- Add Avalonia 12 sample app by @pauldendulk in #3344
Full Changelog: 5.1.0-beta.6...5.1.0-beta.7
5.1.0-beta.6
What's Changed
🐛 Fixes
🚀 Features
- ☢️ Add screen-space coordinate support to partial refresh by @pauldendulk in #3330
- Add GridLayer by @pauldendulk in #3333
- ☢️ Add custom font loading through FontSource for widgets by @pauldendulk in #3335
🛠️ Maintenance
- Create Claude.md by @inforithmics in #3324
- Add RTK instructions by @pauldendulk in #3318
- Enable source linking by @hymccord in #3331
- Remove experimental as a release category by @pauldendulk in #3334
- Add Copilot skills for regression tests and RichTextKit by @pauldendulk in #3336
🧪 Samples
- ☢️ Add samples for VexTile custom style by @pauldendulk in #3326
New Contributors
Full Changelog: 5.1.0-beta.5...5.1.0-beta.6
5.1.0-beta.5
What's Changed
🚀 Features
- Fallback to higher level tiles if tiles are missing in the source data while avoiding re-fetches by @pauldendulk in #3321
- Add support for CustomLayerRenderer in the RasterizingTileSource by @pauldendulk in #3320
📝 Documentation
- Improve documentation based on questions in the issues by @pauldendulk in #3322
Full Changelog: 5.1.0-beta.4...5.1.0-beta.5
5.1.0-beta.4
What's Changed
🚀 Features
- Implement 'FontSource' - A way to load a font of choice by @pauldendulk in #3308
- Support AnimatedFeature for Layer and add gps track sample by @pauldendulk in #3311
- Improve experimental rendering related to FontSource changes by @pauldendulk in #3315
⚡Performance
- Optimize performance related to partial graphics update by @pauldendulk in #3312
🛠️ Maintenance
- Add configuration to switch to experimental rendering by @pauldendulk in #3314
- Allow global switching between experimental and regular renderer by @pauldendulk in #3316
📝 Documentation
- Improve documentation by @pauldendulk in #3306
- Add documentation pages for CustomPointStyle and CustomLayerRenderer by @pauldendulk in #3317
Full Changelog: 5.1.0-beta.3...5.1.0-beta.4