flutter_map
Flutter's №1 non-commercially aimed map client: it's easy-to-use, versatile, vendor-free, fully cross-platform, and 100% pure-Flutter
8.3.1
1000K downloads/mo
#55 most downloaded on pub.dev
fleaflet/flutter_map
What this package is like to depend on
Last release 1 months ago
30 Jun 2026
Release timing varies
gaps range from 1 weeks to 7 months
Some releases are documented
notes for 26 of 86 stable releases
2 versions withdrawn
withdrawn after publishing
9 years old
98 releases · first in 2018
3 releases in the last 12 months
see the full history below
Release timeline
98 releases · Feb 2018 to Jun 2026Releases
latest 60 of 98-
8.3.130 Jun 2026Release notes
Open source →What's Changed
- chore: allow 'pkg:latlong2' v0.10.x dependency by @ThexXTURBOXx in #2207
- chore(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #2210
- chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #2215
- perf: cache zoom-independent marker projections in
MarkerLayerby @ben-milanko in #2213 - perf: avoid quadratic hole-point iteration in
PolygonLayeroffset generation & triangulation by @ben-milanko in #2211 - revert: fix: throw when
LatLngis non-finite by @JaffaKetchup in #2218 - perf: cull polylines via cached projected bounding boxes & chore: prepare for v8.3.1 release by @ben-milanko in #2212
Full Changelog: v8.3.0...v8.3.1
-
8.3.013 Apr 2026Release notes
Open source →What's Changed
- chore: fix CI, remove all non-English languages from Windows demo installer by @JaffaKetchup in #2163
- chore(deps): bump proj4dart from 2.1.0 to 3.0.0 by @dependabot[bot] in #2161
- chore(deps): bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #2159
- chore: upgrade example app build configuration & dependencies by @JaffaKetchup in #2165
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #2167
- fix: build errored tile without error image using custom tile builder by @monsieurtanuki in #2166
- chore(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #2173
- feat: add
MapOptions.onPointerMovecallback by @ReinisSprogis in #2137 - fix: correct coordinate calculation in
_retainChildrenrecursion by @shindonghwi in #2174 - feat: allow fling animation damping to be customised by @ben-milanko in #2177
- feat: add separate
RotatedOverlayImage.transformFilterQualityparameter by @Robbendebiene in #2169 - chore: remove 'package:logger' dependency & OSM unblocking flow by @JaffaKetchup in #2185
- fix: throw when
LatLngis non-finite by @monsieurtanuki in #2182 - chore: absorb necessary 'dart:io' components to remove references by @monsieurtanuki in #2186
- fix: improve fling behaviour when pointer leaves window by @ben-milanko in #2158
- chore(deps): bump actions/github-script from 8 to 9 by @dependabot[bot] in #2196
- chore(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #2191
- chore(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #2187
- fix(docs): correct broken links for
TileLayer&MapControllerby @JaffaKetchup in #2197 - perf: replace unstable
Tilewidget key with dedicated stableTileKeyby @braindamagedman in #2195 - fix: consider
strokeWidthwhen calculating polyline visibility by @braindamagedman in #2184 - fix: correct
LatLngBounds.isOverlappingcalculation by @stani-m in #2190 - chore: prepare for v8.3.0 release by @JaffaKetchup in #2179
New Contributors
- @shindonghwi made their first contribution in #2174
- @ben-milanko made their first contribution in #2177
- @braindamagedman made their first contribution in #2195
- @stani-m made their first contribution in #2190
Full Changelog: v8.2.2...v8.3.0
Release notes
Open source →Contains the following user-affecting changes:
- Added
MapOptions.onPointerMovecallback - #2137 - Added
InteractionOptions.flingAnimationDampingRatioparameter - #2177 - Added separate
RotatedOverlayImage.transformFilterQualityparameter - #2169 - Improved fling behaviour when pointer leaves window - #2158
Contains the following user-affecting bug fixes:
- Use
TileLayer.tileBuilderfor errored tiles - #2166 for #2154 - Correct
TileLayer's tile visibility calculation - #2174 for #2175 - Prevent memory leak by throwing when
LatLngis non-finite during projection - #2182 for #2178 - Consider
strokeWidthwhen calculating polyline visibility during non-aggressive culling - #2184 - Correct
LatLngBounds.isOverlappingcalculation - #2190
Contains the following user-affecting performance improvements:
- Reduce large amounts of unnecessary rebuilding by replacing unstable widget key with dedicated stable
TileKey- #2195
Contains the following other notable changes:
- Removed 'package:logger' dependency - #2185
- Removed OSM unblocking flow - #2185
- Absorb necessary 'dart:io' components to remove references and allow pana to recognise flutter_map as WASM compatible - #2186
Many thanks to these contributors (in no particular order):
- @monsieurtanuki
- @ReinisSprogis
- @shindonghwi
- @ben-milanko
- @Robbendebiene
- @braindamagedman
- @stani-m
- ... and all the maintainers
-
8.2.219 Sep 2025Release notes
Open source →What's Changed
- fix(example): prevent widget overflow in tile builder demo by @ReinisSprogis in #2129
- fix: prevent negative left-shift when using negative
zoomOffsetby @monsieurtanuki in #2133 - fix: assert
MapCamera.zoomis finite on construction by @JaffaKetchup in #2141 - chore: ignore deprecations, bump action versions, add lower flutter sdk bound to ci by @josxha in #2155
- chore: prepare for v8.2.2 release by @JaffaKetchup in #2140
Full Changelog: v8.2.1...v8.2.2
Release notes
Open source →Contains the following user-affecting bug fixes:
- Prevent crash caused by usage of negative
TileLayer.zoomOffset- #2133 for #2127 - Assert that
MapCamera.zoomis finite (to prevent confusing errors within layers) - #2141 for #2135
Many thanks to these contributors (in no particular order):
- @monsieurtanuki
- @ReinisSprogis
- ... and all the maintainers
-
8.2.111 Jul 2025Release notes
Open source →What's Changed
- fix: ensure tiles still load when failing to generate cache metadata by @JaffaKetchup in #2125
Full Changelog: v8.2.0...v8.2.1
Release notes
Open source →Contains the following user-affecting bug fixes:
- Ensure tiles still load when failing to cache them due to HTTP spec non-compliance - #2125 for #2124
Contains the following user-affecting changes:
- Log informational warnings to console when a tile fails to cache due to HTTP spec non-compliance or a shortage of information to calculate an accurate freshness age - #2125 for #2124
Many thanks to these contributors (in no particular order):
- ... and all the maintainers
-
8.2.010 Jul 2025Release notes
Open source →What's Changed
- feat: add inverted fill option to
PolygonLayerby @monsieurtanuki in #2046 - fix: consider
zoomOffset& emulated retina mode when generating tile coordinates by @monsieurtanuki in #2060 - fix: raise attribution widgets above screen insets by @JaffaKetchup in #2058
- chore(meta): added automatic publishing of package to pub.dev on tag creation by @JaffaKetchup in #2059
- feat(example): pack example polygon stress test GeoJSON into binary format by @JaffaKetchup in #2056
- fix: stop ongoing animations when scroll zooming by @JaffaKetchup in #2066
- feat: added
Poly*Layer.drawInSingleWorldby @monsieurtanuki in #2069 - feat: add
ContainCameraLatitudeby @mbenoukaiss in #2073 - feat: added options to customize double-tap (drag) zoom gestures by @JaffaKetchup in #2070
- feat: warn for OSM URLs by @JaffaKetchup in #2074
- feat: added
PolygonLayer.painterFillMethodby @JaffaKetchup in #2081 - fix: make
FeatureLayerUtils.viewportRectreturnRect.zeroif unavailable by @JaffaKetchup in #2095 - feat: add
optimizeRadiusInMetersoption toCircleLayerby @monsieurtanuki in #2101 - fix: consider multi-worlds when constructing camera bounds & allow bounds wider than a world by @monsieurtanuki in #2091
- chore: adjust OSM warning message & consider User-Agent by @JaffaKetchup in #2109
- chore(deps): bump flutter_lints from 5.0.0 to 6.0.0 by @dependabot[bot] in #2099
- chore(deps): bump flutter_lints from 5.0.0 to 6.0.0 in /example by @dependabot[bot] in #2100
- fix: adjust infinite loop protection in
workAcrossWorldsby @monsieurtanuki in #2113 - docs: minor docs fix on
TileDisplay.fadeInarguments by @JaffaKetchup in #2114 - fix: calculate
LayerHitResult.coordinatecorrectly by @JaffaKetchup in #2093 - fix(example): updated marker stress test to use more stressful markers by @ReinisSprogis in #2122
- feat: add built-in caching & tile loading cancellation support by @JaffaKetchup in #2082
- feat: change polygon label placement config, add new 'signed area centroid' algorithm & use new polylabel implementation by @tidu090 in #2102
- chore: prepare for v8.2.0 release by @JaffaKetchup in #2062
New Contributors
- @mbenoukaiss made their first contribution in #2073
- @tidu090 made their first contribution in #2102
Full Changelog: v8.1.1...v8.2.0
Release notes
Open source →Contains the following user-affecting changes:
- Added inverted fill option to
PolygonLayer- #2046 (💰) for #2034 - Added
Polyline/gonLayer.oneWorldparameter - #2069 for #2067 - Added
ContainCameraLatitudecamera constraint - #2073 for #2071 - Added options to customize double-tap (drag) zoom gestures - #2070
- Added warning on usage of OpenStreetMap public tile servers with
TileLayer- #2074 and #2109 - Added
PolygonLayer.painterFillMethodparameter & changed default fill methods - #2081 - Added simple built-in (but extensible) caching to
NetworkTileProvider- #2082 - Added aborting of obsolete in-flight HTTP requests to
NetworkTileProvider- #2082 - Added
CircleLayer.optimizeRadiusInMetersoption to improve performance in some cases - #2101 - Replace (with deprecation)
Polygon.labelPlacementwith more flexible and extensiblePolygon.labelPlacementCalculator/PolygonLabelPlacementCalculatorsystem - #2102 - Added new 'signed area centroid' algorithm, and switch polylabel label placement implementation to use new external library - #2102
Contains the following user-affecting bug fixes:
- Consider
zoomOffset& emulated retina mode when generating tile coordinates - #2060 for #2042 - Raise attribution widgets above screen insets - #2058
- Stop ongoing fling and zoom animations when scroll zooming - #2066 for #1767
- Calculate
LayerHitResult.coordinatecorrectly - #2093 for #2092 - Consider that the camera may be over the anti-meridian when creating
LatLngBoundsinMapCamera.visibleBoundsfor polygon culling - #2091 for #2080 - Adjust infinite loop protection in internals which allow multi-world functionality to improve performance and add more debug info on error - #2113
- Minor API docs fix on
TileDisplay.fadeInarguments - #2114 for #2098
Contains the following meta changes to the package:
- Reduced final package size to ~900KB from >3MB - #2056
- Improved build & publish integrity: publishing to pub.dev now occurs directly from the GitHub repo - #2059
Many thanks to these contributors (in no particular order):
- @monsieurtanuki
- @Quirille
- @freekvandeven
- @mbenoukaiss
- @ReinisSprogis
- @tidu090
- ... and all the maintainers
And an additional special thanks to @monsieurtanuki for investing so much of their time into this project recently - we appreciate it!
- feat: add inverted fill option to
-
8.1.108 Mar 2025Release notes
Open source →What's Changed
- fix: prevent infinite looping when polygon labels displayed on rotated map by @monsieurtanuki in #2054
Full Changelog: v8.1.0...v8.1.1
Release notes
Open source →Contains the following user-affecting bug fixes:
Many thanks to these contributors (in no particular order):
- @monsieurtanuki
- ... and all the maintainers
-
8.1.025 Feb 2025Release notes
Open source →What's Changed
- fix: ensure
MapController.rotateAroundPointdoes not move map when already rotated by @tlserver in #2029 - feat: add multi-world support to
Polygons andPolylines & refactoring by @monsieurtanuki in #2033 - fix: ensure movement gestures emit events when starting by @JaffaKetchup in #2035
- chore: prepare for v8.1.0 release by @JaffaKetchup in #2031
Full Changelog: v8.0.0...v8.1.0
Release notes
Open source →Contains the following user-affecting changes:
- Added multi-world support for
Polygons andPolylines - #2033
Contains the following user-affecting bug fixes:
- Ensure movement gestures emit events when starting - #2035 for #1939
- Ensure
MapController.rotateAroundPointdoes not move map when already rotated - #2029 for #2028
Many thanks to these contributors (in no particular order):
- @tlserver
- @monsieurtanuki
- ... and all the maintainers
- fix: ensure
-
8.0.002 Feb 2025Release notes
Open source →What's Changed
- fix: polygon hit detection when map is rotated by @monsieurtanuki in #1942
- feat: unbounded horizontal scroll by @monsieurtanuki in #1948
- fix: added polygon validity check before hit testing by @JaffaKetchup in #1964
- chore(example): updated WMS tile source & updated web config by @JaffaKetchup in #1963
- chore(example): added WASM support to example by @JaffaKetchup in #1885
- fix: remove
hitValuefromPolyline.renderHashCodeby @JaffaKetchup in #1967 - chore(deps): bump flutter_lints from 4.0.0 to 5.0.0, add /example to dependabot, fix lint by @dependabot in #1971
- fix: eagerly listen to
TileLayer.resetstream to ensure handler is fired by @JaffaKetchup in #1943 - chore: document
MapPosition/PositionCallback.hasGesturein-code by @alestiago in #1973 - chore: fixed Android example app build for CI/CD by @JaffaKetchup in #1985
- fix: make horizontal repetition CRS dependent by @monsieurtanuki in #1978
- fix!: added integer
tileDimension& deprecatedtileSizeby @JaffaKetchup in #1940 - chore(deps): bump codecov/codecov-action from 4 to 5 by @dependabot in #1986
- feat: add
filterQualityparameter to(Base)OverlayImageby @RBT22 in #1989 - feat: expose
BaseOverlayImagefor external implementation by @JaffaKetchup in #1990 - fix(perf): fixed massive performance issue in simplification steps for
Polyline/gonLayers by @JaffaKetchup in #1991 - fix(example): replaced EPSG:3413 with EPSG:3996 (fixed imagery source) & removed Custom CRS page by @JaffaKetchup in #1992
- feat: allow polylines & polygons to cross world boundary by @monsieurtanuki in #1969
- feat(perf): perform bbox culling prior to aggressive culling for polylines by @JaffaKetchup in #1993
- feat!: migrate
Point<double>toOffsetinternally by @mootw in #1996 - refactor: bump min flutter version to 3.27.0, fix deprecations by @JaffaKetchup in #1994
- feat(example): improve appearance of dark mode filter by @TechnicJelle in #2003
- chore(example): updated Android build config & migrated Web URL strategy by @JaffaKetchup in #2004
- feat: replicate
Markers across all worlds by @monsieurtanuki in #2000 - fix: resolve most tile pruning/state issues by @mootw in #2007
- fix: use
Clientinstead ofBaseClientin network tile/image provider by @slightfoot in #2011 - fix: avoid closing externally created
http.ClientinNetworkTileProviderby @JaffaKetchup in #2012 - feat: add multi-world support to
CircleMarkers by @monsieurtanuki in #2018 - fix: invoke map interaction callbacks with coordinates in primary world by @monsieurtanuki in #2025
- feat: added keyboard controls for map gestures by @JaffaKetchup in #1987
- chore: prepare for v8 release by @JaffaKetchup in #2021
New Contributors
- @alestiago made their first contribution in #1973
- @RBT22 made their first contribution in #1989
- @TechnicJelle made their first contribution in #2003
- @slightfoot made their first contribution in #2011
Full Changelog: v7.0.2...v8.0.0
Release notes
Open source →"Infinite Worlds
Contains the following user-affecting changes:
- 🟢 Added unbounded horizontal scroll (with the default projection) and support for layers to cross anti-meridian - #1948 (💰), #1969, #1978, #2000, #2018, #2025 for #1582
- 🟢 Added animated keyboard controls for gestures - #1987
- 🟢 Added
filterQualityparameter to(Base)OverlayImage- #1989 - 🟢 Exposed
BaseOverlayImagefor external implementation/extension - #1990 - 🟡 Changed the majority of references to
PointtoOffset, and method names accordingly - #1996 - 🟡 Added integer
tileDimension& deprecatedTileLayer.tileSize- #1940
Contains the following user-affecting bug fixes:
- Fixed polygon hit detection when map rotated - #1942 for #1934
- Fixed polygon hit detection when polygon invalid - #1964 for #1933
- Eagerly listen to
TileLayer.resetstream internally to ensure handler is fired - #1943 for #1808 - Fixed some tile loading/pruning state issues - #2007 for partially #1837
- Use
Clientinstead ofBaseClientin network tile/image provider - #2011 for #2010 - Avoid closing externally created
http.ClientinNetworkTileProvider- #2012 for #2009
Contains the following user-affecting performance improvements:
- Fixed performance-related bug where
Polyline.renderHashCodeincludedhashCodeunnecessarily causing internal draw batching to fail - #1967 - Fixed massive performance-related bug where the simplification cache for the
Polyline/gonLayers was incorrectly used - #1991 - Perform bounding-box culling prior to aggressive culling for
Polylines - #1993
Many thanks to these contributors (in no particular order):
- @monsieurtanuki
- @alestiago
- @RBT22
- @TechnicJelle
- @slightfoot
- ... and all the maintainers
-
7.0.202 Jul 2024Release notes
Open source →What's Changed
- chore: relax dependency on 'package:logger' by @monsieurtanuki in #1922
- fix: fixed multiple issues in
PolygonLayerandPolylineLayerby @JaffaKetchup in #1925 - feat: allow reassignment of
MapControllertoFlutterMapmultiple times by @josxha in #1915
Full Changelog: v7.0.1...v7.0.2
Release notes
Open source →Note that this version causes a technically breaking change by removing
PolygonLayer.useDynamicUpdate&PolylineLayer.useDynamicUpdate, introduced in v7.0.1. However, the implementations for these was broken on introduction, and their intended purpose no longer exists. Therefore, these should not have been used in any capacity, and should not affect any projects.Contains the following user-affecting bug fixes:
- Fixed significant performance issues with
PolygonLayer&PolylineLayerinadvertently introduced by v7.0.1 - #1925 for #1921 - Fixed bug where the holes of a
Polygonwould only appear if their winding direction was opposite to the direction of thePolygon.points- #1925 for #1924 - Relaxed constraint on 'package:logger' dependency - #1922 for #1916
- Allowed re-assignment of a
MapControllerto aFlutterMapmultiple times - #1915 for #1892
-
7.0.109 Jun 2024Release notes
Open source →What's Changed
- fix: downgraded some dependencies to re-introduce compatbility with Flutter 3.19 by @monsieurtanuki in #1897
- perf: expose
isPointInPolygonand make 40% faster (at least in JIT mode) by @ignatz in #1907 - fix: overlapping
Polygoncutting & color/translucency mixing by @JaffaKetchup in #1901 - fix: correct
PolygonLayer.useAltRendererrenderer whenPolygons have multiple holes by @JaffaKetchup in #1906 - feat: implement efficient(-ish) change detection for
PolygonLayer&PolylineLayerby @JaffaKetchup in #1904 - chore: prepare for v7.0.1 release by @JaffaKetchup in #1911
Full Changelog: v7.0.0...v7.0.1
Release notes
Open source →Contains the following user-affecting bug fixes:
- Implemented internal efficient(-ish) change detection for
PolygonLayer&PolylineLayer- #1904 - Fixed
PolygonLayer.useAltRendererrenderer whenPolygons have multiple holes - #1906 - Fixed overlapping
Polygoncutting & color/translucency mixing - #1901 - Downgraded dependencies to support Flutter 3.19 - #1897
Contains the following user-affecting performance improvements:
- Improved speed of
isPointInPolygonmethod up to 40% - #1907
-
7.0.026 May 2024Release notes
Open source →"
onTap-ish At Last!"Contains the following user-affecting changes:
- 🟢 Added interactivity & hit detection to
Polyline(Layer),Polygon(Layer), andCircle(Layer)- #1822 (for #1740 and #385), #1728, #1886 - 🟢 Made
FlutterMap.optionsan optional parameter - #1816 - 🟢 Added alternative (
Canvas.drawVertices) render pathway forPolygonLayer- #1800 - 🟢 Added
Scalebarlayer - #1821 - 🟢 Added
TileUpdateTransformers.debounceto debounce tile requests - #1850 (replaces #1840) - 🟢 Added static
Marker.computePixelAlignmentmethod to calculate absolute alignment - #1847 - 🟢 Added
StrokePattern, which supportssolid,dotted, anddashedstyles forPolylines and the border ofPolygons - #1855 (replaces #1845), #1865, #1871, #1875, #1876 - 🔴 Deprecated
MapOptions.applyPointerTranslucencyToLayers- #1822 for #1740
Contains the following user-affecting bug fixes:
- Fixed
NetworkTileProviderpoor performance andClientExceptions/SocketExceptions on disposal - #1742 for #1761, #1703, #1698 - Fixed
Polygon/PolylineLayerfailing to move on changes - #1825 - Prevented fatal crash due to infinite loop/memory leak at high zoom levels over some types of
Polygon- #1854 for #1829 - Fixed
PolylineLayerexception: "The west longitude can't be smaller than the east longitude" - #1879 - Fixed
LatLngBounds.centerto work across world bounds - #1860
Contains the following user-affecting performance improvements:
- Added
PolylineandPolygonsimplification, and enhancedPolylineculling algorithm to work within the samePolyline- #1704, #1795, #1805, #1812 - Cached projection of
Polygonpoints & improved CRS internals - #1801 - Fixed
PolygonLayerbundled drawing system - #1800 - Other miscellaneous generic performance enhancements across the board, and addition of stress tests to example application
Contains the following important internal changes (does not include changes to the example app, meta changes to the repo/org configuration, or minor changes):
- Merged
MapInternalController&MapControllerImpl, and removed "FlutterMap" prefix from some members - #1738 - Made
LatLngBoundsmutable - #1834
Many thanks to these contributors (in no particular order):
- @androidseb
- @ignatz
- @Alexays
- @ReinisSprogis
- @gnassro
- @monsieurtanuki
- ... and all the maintainers
- 🟢 Added interactivity & hit detection to
-
7.0.0-dev.102 Apr 2024 pre-releaseNothing published for this version
-
6.2.127 May 2024Release notes
Open source →If possible, prefer to update directly to v7. This version is provided only to enable Flutter 3.22 compatibility without requiring a breaking change.
v6.2.0 was retracted from pub.dev due to a mistake in the release preparation. For more information, see this comment. v6.2.1 is the replacement without the issues.
Contains the following user-affecting changes:
- Added support for Flutter 2.22 - #1883
-
6.2.026 May 2024 withdrawnNothing published for this version
-
6.1.003 Dec 2023Release notes
Open source →Contains the following user-affecting changes:
- 🟢 Added option to draw labels on top of all
Polygons in a layer - #1707 - (Released 'flutter_map_cancellable_tile_provider' v2.0.0)
Contains the following user-affecting bug fixes:
- Removed flutter_map text attribution when
RichAttributionWidget.showFlutterMapAttributionisfalse- #1712 - Repaired
TileLayer.tileBounds- #1713 for #1710 - Added
doubleTapDragZoomandscrollWheelZoomtoInteractiveFlag.all- #1726 for #1725 - Repaired correct movement for
CircleLayerwhen panning - #1735 - Improved value distribution for
MapPosition.hashCode- #1747
Contains the following user-affecting performance improvements:
- Optimized
Bounds- #1706 - Avoided creating a new list on every frame unnecessarily - #1708
- Cull
Polygonlabels seperately (more strongly), and cache theTextPainter- #1716 - Avoided caching a single commonly-used multiplication - #1743
Many thanks to these contributors (in no particular order):
- @ignatz
- @amal-stack
- @Robbendebiene
- @leiflinse-trivector
- ... and all the maintainers
And an additional special thanks to @ignatz for investing so much of their time into this project recently - we appreciate it!
In other news:
- A warm welcome to @josxha, who's recently joined the maintainer team
- We've also made some widespread minor improvmenents to the example application
- Check out the new Showcase page on our docs for some awesome projects
- We're working on some very exciting reworked features and performance improvements for v7 - keep an ear out by joining our Discord server
- 🟢 Added option to draw labels on top of all
-
6.0.124 Oct 2023Release notes
Open source →Contains the following user-affecting bug fixes:
- Fixed
CircleMarker's incorrect appearance and size - #1692 for #1688 - Fixed
LateInitializationErrorwhen specifyinginitialCameraFit- #1691 for #1684 - Fixed incorrect behaviour issues caused by the adjusted default
MapOptions.cameraConstraint- #1700 for #1682 & #1699 - Fixed bug where not providing either
wmsOptionsnorurlTemplatecaused a null exception ingetTileUrland whenretinaModeistrue- #1701 - Re-exported 'positioned_tap_detector_2' library (with
TapPosition) - #1694 for #1693
Many thanks to these contributors (in no particular order):
- @Alexays
- ... and all the maintainers
- Fixed
-
6.0.009 Oct 2023Release notes
Open source →"Photography"
Contains the following user-affecting changes:
- 🟢 Added new
MapCameraobject to reduce scope ofMapController& re-implemented internal state management - #1551 with #1614 - 🟢 Added support for rotation on desktop with cursor/pointer and keyboard trigger - #1592 & #1642 for #1568
- 🟢 Added support for cancelling in-loading tiles to
TileProviders & refactored methods - #1622 - 🟢 Added support for allowing gestures to bubble down to all layers - #1615
- 🟢 Added
minZoomproperty toCameraFits - #1562 - 🟢 Added
InteractiveFlag.doubleTapDragZoom- #1603 - 🟢 Added in-memory caching support for tiles loaded by
NetworkTileProvider, to reduce tile loading times and reduce unnecessary tile server requests - #1629 - 🟢 Added new options for rotation support to bounds fitting - #1550 for #1342
- 🟢 Added new '{d}' 'dimension' placeholder to
TileLayer.urlTemplate(viaTileProvider.generateReplacementMap) to be filled withTileLayer.tileSize- #1665 for #1664 - 🟡 Replaced interaction configurations from
MapOptionswithInteractionOptions(accessed fromMapOptions) - #1551 - 🟡 Replaced
MapOptions.center,bounds,zoom, androtationwithinitialCenter,initialCameraFit,initialZoom, andinitialRotation- #1551 - 🟡 Replaced
MapOptions.maxBoundswithMapOptions.cameraConstraint- #1551 - 🟡 Replaced
TileLayer.backgroundColorproperty withMapOptions.backgroundColorto simplify interaction when using multiple tile layers - #1578 & #1647 for #1577 & #1566 - 🟡 Replaced
FlutterMap.nonRotatedChildrenwith an inverse purpose (usually internal)MobileLayerTransformer- #1615 - 🟡 Replaced
Marker.anchorwithMarker.alignmentthat uses built-inAlignmentobject - #1659 - 🟡 Replaced
Marker.builderwith non-builderMarker.child- #1659 - 🟡 Changed
TileLayer.retinaModebehaviour - #1673 for #1670 - 🟡 Changed some default arguments, including
TileLayer.panBufferandMapOptions.cameraConstraint- multiple PRs - 🔴 Removed
CustomPointin favour of extension methods onPoint<T>- #1585 for #1522 - 🔴 Removed
MoveAndRotateResultin favour of aRecordin format of({bool moveSuccess, bool rotateSuccess})- #1636 - 🔴 Removed
Anchor,AnchorPos, and all anchor related terminology - #1659 - 🔴 Removed dedicated plugins API import - #1632
Contains the following user-affecting bug fixes:
- Handled exceptions correctly in default image provider if no
fallbackUrlis defined - #1555 for #1554 - Ignored gestures on closed
RichAnimationWidgetwhen usingFadeRAWA- #1591 for #1589 - Avoided setting 'User-Agent' header in
TileProviderwhen running on the web, to avoid polluting the debug console with error messages - #1677 for #1654 - Fixed some
Polygonedge-cases - #1598 & #1599 - Fixed
TileLayer.resetfailing to load new tiles - #1620 for #1619 - Fixed incorrect
Markeranchoring when counter-rotating - #1623 for #1500 - Fixed
fitBoundsfailing to load new tiles - #1626 for #1563 - Fixed
maxNativeZoomapparently failing to have any effect - #1627 for #1625 - Fixed
hasGesturebeingfalseafter double tap zoom inonPositionChangedcallback - #1465 for #1630 - Fixed failure to attempt tile requests with
fallbackUrlwhen an exception is thrown whilstdecodeing instead of during the network request - #1648 for #1649 - Fixed potential issues with building
RichAttributionWidget- #1661 - Fixed
TileLayer.fallbackUrlnot being attempted whenFlutterMapNetworkImageProviderfailed to decode a non-image - part of #1662 for #1667 - Fixed "PositionedTapDetector2" not correctly transforming global coords to local coords when the
FlutterMapwidget wasTransformed - #1676 for #1675
Contains the following user-affecting performance improvements:
- Created official plugin to reduce tile loading times when running on web, using #1622's infrastructure - flutter_map_cancellable_tile_provider
- Improved
Polygonperformance when using labels, by increasing batching ability and label location calculations - #1607 & #1641 - Improved
CircleMarkerperformance, by using a singleCustomPainterinstance and more efficient draw calls - #1679 - Improved internal code style and strictness - #1594
- Added logging to warn of potential performance issues and recommend workarounds (such as 'flutter_map_cancellable_tile_provider') - #1632
In other news:
- There's many new performance and cost-reducing improvments available (some may need some manual work to enable): please see the Highlights section on the Migrating To v6 docs page!
- We now accept one-time donations! We're extremely grateful for anything you can spare. We'll donate 15% of what we receive to the OpenStreetMap Foundation, as a thanks for their excellent work. For more info, please see Support Us.
- We're looking for sponsors and OSS projects that use FM significantly, and want to be advertised! For more info, please see Showcase.
- We're on the hunt for maintainers to join the team! For more information, please see the application form.
- OpenStreetMap Operations has warned us that users should move away from using subdomains with their tile servers, so please do! Appropriate warnings will now be logged in console should you fail to do this.
Many thanks to these contributors (in no particular order):
- @jjoelson
- @envomer
- @rorystephenson
- @Robbendebiene
- @ignatz
- @josxha
- @lonelyteapot
- @s6o
- @bramp
- @Alexays
- ... and all the maintainers
And an additional special thanks to @rorystephenson for investing so much of their time into this project recently - we appreciate it!
- 🟢 Added new
-
6.0.0-dev.328 Aug 2023 pre-releaseNothing published for this version
-
6.0.0-dev.229 Jul 2023 pre-releaseNothing published for this version
-
6.0.0-dev.107 Jul 2023 pre-releaseNothing published for this version
-
5.0.004 Jun 2023Release notes
Open source →"Dart The Third"
Contains the following API changes:
- Migrated to Flutter 3.10 and Dart 3.0 minimums - #1512 & #1517
- Added offset capability to
FlutterMapState.move/MapController.movemethods - #1532 for #952 - Added
MapController.rotateAroundPointmethod - #1532 for #1460 - Added
TileLayer.fallbackUrlsupport toFileTileProvider- #1532 - Added more position options to
AnchorAlign- #1532 - Improved
MarkerLayer/Layerinteroperability - #1532 - Improved response/emission time of
onTap/MapEventTapwhenInteractiveFlag.doubleTapZoomis disabled - #1532 - Improved (stricter) typing of
CustomPoint- #1515 - Deprecated
TileUpdateTransformers.alwaysLoadAndPrunein favour ofignoreTapEvents- #1517 - Deprecated
AnchorAlign.nonein favour ofAnchorAlign.centerornull- #1532 - Removed
NetworkNoRetryTileProviderin favour of customNetworkTileProvider.httpClient- #1512 - Removed
FileTileProviderfallback toNetworkTileProvideron web - #1512 - Removed
saveLayersproperty fromPolylineLayer- #1532 & #1519 - Updated dependencies - #1530
- Updated 'latlong2' to access
constLatLngobjects - Updated 'http'
- Removed 'tuple' in favour of built-in
Records (#1517)
- Updated 'latlong2' to access
Contains the following bug fixes:
- Polylines with translucent fills and borders now paint properly - #1519 for #1510 & #1420
- Ensure
idofMapController.moveis passed through to the emittedMapEventMove- #1534 in #1532 for #1542 - Fixed MacOS pinch zoom gesture issue - #1543 for part of #1354
- Removed potential for jitter/frame delay when painting
Polylines &Polygons - #1514 - Removed potential for un-
mountedsetStatecall inRichAttributionWidget- #1532 for #1538
Contains the following performance improvements:
- Reduced unnecessary rebuilding in environments where
MediaQuerychanges frequently - #1523 - Use Flutter's default
CachingAssetBundleinAssetTileProviderwhenTileLayer.fallbackUrlis not specified - #1532 for #1436 - Improved performance of
TileProviders andFlutterMapNetworkImageProvider- #1512
In other news:
- You may have noticed some minor rebranding around the repo recently! The maintainers have finally gained full member access from the previous owner (thanks John :)) to the 'fleaflet' organisation and now have total control.
- We've launched a Live Web Demo so you can experiment with flutter_map on the web without having to install any apps or build from source yourself! Visit demo.fleaflet.dev.
- We've made some big changes to the structure/organization of flutter_map internals, which we hope should make it easier for new contributors to add code due to the reduction of the scope of responsibility of each source file.
Many thanks to these contributors (in no particular order):
- @josxha
- @ignatz
- @rorystephenson
- @tlserver
- @JosefWN
- ... and all the maintainers
And an additional special thanks to @josxha & @ignatz for investing so much of their time into this project recently - we appreciate it!
-
5.0.0-dev.120 May 2023 pre-releaseNothing published for this version
-
4.0.005 May 2023Release notes
Open source →"Out With The Old, In With The New"
Contains the following improvements:
- Reimplemented
TileLayerand underlying systems - #1475 - Reimplemented attribution layers - #1487 & #1390
- Added secondary tap handling to
MapOptions- #1448 for #1444 - Refactored
FlutterMapState'smaybeOfmethod intomaybeOf&of- #1495 - Removed
LatLngBounds.pad(unused and broken) method - #1427 - Removed
absorbPanEventsOnScrollablesoption - #1455 for #1454 - Removed leftover deprecations - #1475
- Improved rotation gestures (cause rotation about the gesture center) - #1437
- Improved number (
num/int/double) consistency internally - #1482 - Minor example application improvements - #1440 & #1487
Contains the following bug fixes:
- Prevented scrolling of list and simultaneous panning of map on some platforms - #1453
- Improved
LatLngBounds's null safety situation to improve stability - #1431 - Migrated from multiple deprecated APIs - #1438
Contains the following performance and stability improvements:
- Batched polygon and polyline rendering to minimize redraws and maximize their efficiency - #1442 & #1462
- Added a threshold for rasterization to avoid excessive fixed overhead cost for cheap redraws - #1462
Many thanks to these contributors (in no particular order):
- @rorystephenson
- @augustweinbren
- @ianthetechie
- @pablojimpas
- @tlserver
- @Zzerr0r
- @tobiasht
- @ignatz
- ... and all the maintainers
And an additional special thanks to @rorystephenson & @ignatz for investing so much of their time into this project recently - we appreciate it!
- Reimplemented
-
4.0.0-dev.221 Apr 2023 pre-releaseNothing published for this version
-
4.0.0-dev.104 Apr 2023 pre-releaseNothing published for this version
-
3.1.021 Dec 2022Release notes
Open source →Contains the following additions/removals:
- Added fallback URLs - #1348 for #1203
- Added parameter to force integer zoom levels to
FitBoundsOptions- #1367 - Added
Keys toPolygons,Polylines, andCircleMarkers - #1402 & #1403 - Added
Polylineparameter to treat width in meters - #1404 - Added buffer feature to
TileLayerto preload surrounding tiles - #1405 for #1337 - Deprecated obsolete parameter - #1368
Contains the following bug fixes:
- Improved tile handling to simplify internals - #1356
- Improved performance by removing unnecessary casts - #1357
- Fixed ESPG:3413 example - #1359
- Fixed tile layer reset example - #1372
- Fixed issue with
MapControllermovement - #1374 - Fixed flickering issue with
fitBounds- #1376 - Fixed
fitBounds/boundsnot working on first display - #1413 - Fixed error when zooming - #1388
Many thanks to these contributors (in no particular order):
- @JosefWN
- @Robbendebiene
- @urusai88
- @LeonTenorio
- ... and all the maintainers
-
3.0.005 Sep 2022Release notes
Open source →"Boiler(plate) Repairs"
Contains the following additions/removals:
- Multiple changes - #1333
- Removed deprecated APIs from v2
- Removed old layering system
- Added new layering system
- Removed old plugin registration system
- Added
Polygonlabel rotation (countered to the map rotation) - #1332
Contains the following bug fixes:
- Fixed missing widget sizing to fix multiple issues - #1334
- Forced CRS changes to rebuild children - #1322
- Allowed map to absorb gesture events correctly within other scrollables - #1308
- Improved performance by harnessing the full power of Flutter widgets - #1165, #958
In other news:
- @MooNag & @TesteurManiak have joined the maintainer team!
Many thanks to these contributors (in no particular order):
- @MooNag
- @jetpeter
- @Firefishy
- ... and all the maintainers
- Multiple changes - #1333
-
3.0.0-beta.317 Aug 2022 pre-releaseNothing published for this version
-
3.0.0-beta.217 Aug 2022 pre-release withdrawnNothing published for this version
-
3.0.0-beta.113 Aug 2022 pre-releaseNothing published for this version
-
2.2.002 Aug 2022Release notes
Open source →Contains the following additions/removals:
- Added
RotatedOverlayImagewhich supports image rotation and skewing by specifying a 3rd point - #1315 - Added
latLngToScreenPointand refactoredpointToLatLng- #1330
Contains the following bug fixes:
- Removed a particularly illusive null-safety bug - #1323
In other news:
Many thanks to these contributors (in no particular order):
- @Robbendebiene
- @lsaudon
- ... and all the maintainers
- Added
-
2.1.125 Jul 2022Release notes
Open source →Contains the following additions/removals:
- None
Contains the following bug fixes:
- Removed a particularly illusive null-safety bug - #1318
In other news:
- None
Many thanks to these contributors (in no particular order):
- sergioisair (tested changes over on Discord)
- ... and all the maintainers
-
2.1.022 Jul 2022Release notes
Open source →Contains the following additions/removals:
- Added built in keep alive functionality - #1312
- Added disposal of
AnimationControllerbefore it is reassigned - #1303 - Added better polar projection support and example - #1295
- Added stroke cap and stroke join options to
Polygons - #1295
Contains the following bug fixes:
- Removed a class of
LateInitializationErrors by reworkingMapControllerlifecycle - #1293 for #1288 - Improved performance during painting
Polygons - #1295
In other news:
- None
Many thanks to these contributors (in no particular order):
- @Zverik
- @rbellens
- @JosefWN
- ... and all the maintainers
-
2.0.011 Jul 2022Release notes
Open source →"
Blocked By OSM"Contains the following additions/removals:
- Added adjustable mouse wheel zoom speed - #1289
- Multiple changes - #1294
- Added advanced header support, including 'User-Agent'
- Refactored
TileProviders - Resolved multiple TODOs within codebase
- Removed old deprecated code
Contains the following bug fixes:
- Fixed unsymmetrical markers disappearing with unusually positioned anchors - #1291
- Fixed potential for error 403s due to invalid/blocked 'User-Agent' header - #1294
In other news:
- None
Many thanks to these contributors (in no particular order):
- @mboe
- @aytunch
- @MichalTorma
- ... and all the maintainers
-
2.0.0-beta10 Jul 2022 pre-releaseNothing published for this version
-
1.1.125 Jun 2022Release notes
Open source →Contains the following additions/removals:
- None
Contains the following bug fixes:
- None
In other news:
- The new documentation website is now live at https://docs.fleaflet.dev. Visit it today to get much improved setup and usage instructions, and more!
Many thanks to these contributors (in no particular order):
- All the documentation authors: https://docs.fleaflet.dev/credits
- ... and all the maintainers
-
1.1.016 Jun 2022Release notes
Open source →Contains the following additions/removals:
- Deprecated the existing
attributionBuilder& added a new method of attribution throughAttributionWidget- #1262 for #1040 - Added more callbacks for pointer gestures - #1275
Contains the following bug fixes:
In other news:
- None
Many thanks to these contributors (in no particular order):
- @pmjobin
- ... and all the maintainers
- Deprecated the existing
-
1.0.007 Jun 2022Release notes
Open source →Contains the following additions/removals:
- Removed inappropriate null-aware checking from
moveAndRotate- #1003 - Removed unused dependencies from pubspec - #1237
- Migrated to 'flutter_lints' from 'pedantic' - #1183
- Made boolean values uppercase strings in WMS requests - #1132
- Made pinch zoom use center of gesture for focus of zoom - #1081
- Made scroll zoom use center of gesture for focus of zoom - #1191
- Added stroke, cap, and join options to
Polyline- #1077 - Added option to use pixel cache and length check on
Markersto avoid crash - #1147 - Added
MapEventScrollWheelZoomevent when zooming using scroll wheel - #1182 - Added
isFilledparameter toPolygon- #501 - Added example page for
Polygons - #501 - Added
maxBoundsparameter toMapOptions- #1211 - Added
tileBoundsparameter toTileLayerOptions- #1212 - Added
saveLayersparameter toPolylineLayerOptionsandPolylinePainter- #1219 (part of #1165) for #1217 - Added centered labels to
Polygon- #1220 based off #800 - Added alternative
Polygonlabel centering algorithm with an option - #1225 - Added
pointToLatLngmethod inMapController- #1115 for #496, #607, #981, #1010 - Added stricter linting rules - #1238
- Switched to semantic versioning (from 0.15.0 to 1.0.0)
- Multiple plugin list changes
- Multiple README changes
Contains the following bug fixes:
- Fixed unusual behaviour by cancelling animations on
MapControllermove events - #1043 for #946 - Fixed
ZoomButtonsPluginOptionby checking minimum and maximum zoom properly - #1120 - Fixed external bug by updating dependency on 'positioned_tap_detector_2' - #1047
- Fixed equal operator types for
Coords- #1113 - Fixed
LateInitializationErrorwhen usingpolylineCulling- #1110 for #1119, #1037, #974, #931 - Fixed
FileTileProvideron the web - #1170 - Fixed
Polygondotted border drawing - #501 - Fixed example application on Android - #1213
- Fixed hairline cracks and flickering - #1169
- Fixed EPSG4326 parameter - #1135
- Fixed initial
boundsinMapOptions- #1216 - Fixed emission of move event when source is custom - #1232 for #1231
- Fixed tile layer lag during flings/animations - #1247 (part of #1165) for #1245
- Fixed/added Flutter 3 compatibility - #1236 for #1234
In other news:
- Two more maintainers joined the team (@ibrierley & @JaffaKetchup)
- A public Discord server was created - join via the README link
- A new documentation website was started - take a peek via the README link
Many thanks to these contributors (in no particular order):
- @JonIsAmazingYa
- @Robbendebiene
- @paolorotolo
- @comatory
- @chriscant
- @calmh
- @FaFre
- @jithware
- @stou
- @Zzerr0r
- @mo-ah-dawood
- @a14n
- @pmjobin
- @BaptistePires
- @Zverik
- @yeleibo
- @TesteurManiak
- @sikandersaleem
- @teuaguiar01
- @beroso
- @hschendel
- @pablojimpas
- @HugoHeneault
- @rorystephenson
- ... and all the maintainers
- Removed inappropriate null-aware checking from
-
0.14.013 Sep 2021Nothing published for this version
-
0.13.107 Jun 2021Nothing published for this version
-
0.13.004 Jun 2021Nothing published for this version
-
0.12.016 Mar 2021Nothing published for this version
-
0.11.029 Jan 2021Nothing published for this version
-
0.10.108 Jul 2020Nothing published for this version
-
0.10.1+104 Aug 2020Nothing published for this version
-
0.10.008 Jul 2020Nothing published for this version
-
0.9.007 Apr 2020Nothing published for this version
-
0.8.207 Jan 2020Nothing published for this version
-
0.8.103 Jan 2020Nothing published for this version
-
0.8.016 Dec 2019Nothing published for this version
-
0.7.303 Oct 2019Nothing published for this version
-
0.7.230 Aug 2019Nothing published for this version
-
0.7.128 Aug 2019Nothing published for this version
-
0.7.028 Jul 2019Nothing published for this version
-
0.7.0+128 Jul 2019Nothing published for this version
-
0.7.0+231 Jul 2019Nothing published for this version
-
0.6.107 Jun 2019Nothing published for this version
-
0.6.1+107 Jun 2019Nothing published for this version
-
0.6.1+207 Jun 2019Nothing published for this version
-
0.6.006 Jun 2019Nothing published for this version