v0.25.0
Flutter MapLibre GL v0.25.0
⚠️ Breaking changes?
No breaking changes for users. Your existing code works without modifications.
The web platform was migrated internally to support WASM and Flutter 3.38.4+, but the public API remains unchanged.
🚀 What you can do now
Added
Logo Customization
You can now control the MapLibre logo visibility and position on your maps:
MapLibreMap(
logoSettings: LogoSettings(
enabled: true, // Show the MapLibre logo!
position: LogoPosition.bottomLeft, // Or bottomRight, topLeft, topRight
),
)
New Web Platform Methods
The web implementation now supports additional methods previously only available on mobile:
controller.getStyle()- Returns the current map style as a JSON stringcontroller.getSourceIds()- Returns a list of all source IDs in the current stylecontroller.getLayers()- Improved with safe null handling
Explicit Annotation Manager Initialization (#668)
Annotation methods now enforce explicit initialization with clear exceptions when the style is not loaded. This helps you catch issues early instead of getting silent failures or null dereferences:
- Calling
add*methods before style load now fails fast with a clear Exception - Better null safety for annotation collections (symbols, lines, circles, fills)
- More predictable behavior across platforms
Camera Target Bounds (#8bcd74a)
Refactored cameraTargetBounds implementation for consistent behavior across platforms. You can now reliably constrain the camera to specific geographic bounds on both Android and iOS.
iOS Attribution Support
Source attribution strings are now properly displayed on iOS with clickable links. The implementation parses HTML attribution from source properties and creates native iOS attribution dialogs that open URLs when tapped.
Changed
WASM Compatible Web Platform (#687)
- Migrated from deprecated
dart:js_utilto moderndart:js_interopAPI - Fully compatible with Flutter's WASM compilation target
- Required for Flutter 3.38.4+ compatibility
- Enhanced type safety for JavaScript ↔ Dart conversions
MapLibre Android SDK v12.3.0 (#690)
- Synchronous GeoJSON source updates
- Support for MLT-format vector tile sources
- Better frustum offset support
- Improved stability and performance
Example App Refactor
- Complete UI redesign with responsive layouts
- Maps now use 50-60% of screen height for better visibility
- Improved button and control layouts across different screen sizes
Fixed
iOS
- Min/max zoom preferences now work correctly (#5230fab)
queryRenderedFeatureswith empty layer list now returns all targets, matching Android behavior (#680)- Enhanced LayerPropertyConverter to handle null values and improve expression parsing (#98660dc)
- Better handling of null values in layer properties
- Improved expression parsing for complex layer configurations
Web
setPaintPropertyandsetLayoutPropertynow handle nullableJSAnyvalues correctly (#12dfad2)- Improved
jsifyfunction to create JS arrays correctly - Pattern images now load properly with correct RGBA format conversion (#9ce52a6)
Cross-Platform
- Fixed
lineDasharrayand pattern properties reset to null in layer properties (#2b550ed) - Fixed pattern images loading - no more "mismatched image size" errors (#9ce52a6)
- Improved MapLibreMapController disposing to prevent memory leaks
- Removed unnecessary disposing of mapController in example app - improved stability (#f989797)
- Refactored
cameraTargetBoundsfor consistent behavior on Android and iOS (#8bcd74a)
📦 Upgrade
dependencies:
maplibre_gl: ^0.25.0
That's it. No code changes needed.
👪 Contributors
A big thank you to everyone who contributed to this release!
@srmncnk, @albertmoravec, and all community members who reported issues and provided feedback.
📝 More Info
- Full Changelog: v0.24.1...v0.25.0
- Documentation: pub.dev/packages/maplibre_gl
- Leave a comment: Release v0.25.0
Happy mapping! 🗺️ 💙