feat(flet-map): add image overlay support#6421
feat(flet-map): add image overlay support#6421ndonkoHenri wants to merge 7 commits intorelease/v0.85.0from
flet-map): add image overlay support#6421Conversation
Deploying flet-website-v2 with
|
| Latest commit: |
db25575
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://ec2168a8.flet-website-v2.pages.dev |
| Branch Preview URL: | https://map-overlay-images.flet-website-v2.pages.dev |
Deploying flet-examples with
|
| Latest commit: |
db25575
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://06d59fa4.flet-examples.pages.dev |
| Branch Preview URL: | https://map-overlay-images.flet-examples.pages.dev |
There was a problem hiding this comment.
Pull request overview
Adds image overlay capabilities to flet-map, enabling both axis-aligned and rotated image overlays on top of flutter_map.
Changes:
- Introduces
OverlayImageLayerwithOverlayImageandRotatedOverlayImagecontrols (Python + Flutter/Dart). - Refactors several Flutter-side parsers to
Controlextension helpers and wraps more layer widgets withBaseControl. - Adds documentation pages, sidebar entries, and a runnable Python example for overlay images.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| website/sidebars.yml | Adds new Map docs entries for overlay image layer + overlay types. |
| website/sidebars.js | Adds the same overlay docs to the JS sidebar structure. |
| website/docs/controls/map/rotatedoverlayimage.md | New API doc page for RotatedOverlayImage. |
| website/docs/controls/map/overlayimagelayer.md | New API doc page for OverlayImageLayer. |
| website/docs/controls/map/overlayimage.md | New API doc page for OverlayImage. |
| website/docs/controls/map/index.md | Adds overlay-images example section and updates reference links. |
| website/docs/controls/map/baseoverlayimage.md | New API doc page for BaseOverlayImage. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/utils/map.dart | Refactors map parsing via new Control extension helpers. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/utils/attribution_alignment.dart | Adds Control extension getter for AttributionAlignment. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/tile_layer.dart | Uses new parsing extension helpers for tile layer configuration. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/simple_attribution.dart | Wraps attribution widget in BaseControl. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/rich_attribution.dart | Wraps widget in BaseControl and uses new alignment getter. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/polyline_layer.dart | Uses new parsing extension helpers and wraps in BaseControl. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/polygon_layer.dart | Uses new parsing extension helpers and wraps in BaseControl. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/overlay_image_layer.dart | New Flutter implementation mapping controls to flutter_map overlay image types. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/marker_layer.dart | Uses new parsing helper and wraps in BaseControl. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/extension.dart | Registers OverlayImageLayer control with the extension factory. |
| sdk/python/packages/flet-map/src/flutter/flet_map/lib/src/circle_layer.dart | Uses new parsing helper and wraps in BaseControl. |
| sdk/python/packages/flet-map/src/flet_map/polyline_layer.py | Makes PolylineMarker a ft.BaseControl. |
| sdk/python/packages/flet-map/src/flet_map/polygon_layer.py | Makes PolygonMarker a ft.BaseControl. |
| sdk/python/packages/flet-map/src/flet_map/overlay_image_layer.py | Adds Python API for overlay images + layer. |
| sdk/python/packages/flet-map/src/flet_map/marker_layer.py | Makes Marker a ft.BaseControl. |
| sdk/python/packages/flet-map/src/flet_map/map_layer.py | Documents OverlayImageLayer as a supported layer type. |
| sdk/python/packages/flet-map/src/flet_map/circle_layer.py | Makes CircleMarker a ft.BaseControl. |
| sdk/python/packages/flet-map/src/flet_map/init.py | Re-exports overlay-image classes and updates __all__. |
| sdk/python/packages/flet-map/CHANGELOG.md | Adds release note entry for overlay image support. |
| sdk/python/examples/controls/map/overlay_images/pyproject.toml | New example project metadata for overlay images gallery entry. |
| sdk/python/examples/controls/map/overlay_images/main.py | New runnable example demonstrating overlay images. |
| client/pubspec.lock | Updates locked Dart dependencies (incl. flet path package version). |
| .agents/skills/flet-validation/SKILL.md | Updates internal skill description text. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - Layers: [`TileLayer`](tilelayer.md), [`MarkerLayer`](markerlayer.md), [`OverlayImageLayer`](overlayimagelayer.md), [`CircleLayer`](circlelayer.md), [`PolygonLayer`](polygonlayer.md), [`PolylineLayer`](polylinelayer.md) | ||
| - Markers and overlays: [`Marker`](marker.md), [`CircleMarker`](circlemarker.md), [`PolygonMarker`](polygonmarker.md), [`PolylineMarker`](polylinemarker.md), [`OverlayImage`](overlayimage.md), [`RotatedOverlayImage`](rotatedoverlayimage.md) | ||
| - Attributions: [`SimpleAttribution`](simpleattribution.md), [`RichAttribution`](richattribution.md), [`SourceAttribution`](sourceattribution.md) |
There was a problem hiding this comment.
The "Reference" list formatting looks off: Layers, Markers and overlays, and Attributions are now top-level bullets instead of being nested under the Map entry. This changes the rendered structure and makes it harder to read. Consider nesting these items under the Map bullet (standard nested markdown list indentation) so the reference hierarchy is preserved.
| - Layers: [`TileLayer`](tilelayer.md), [`MarkerLayer`](markerlayer.md), [`OverlayImageLayer`](overlayimagelayer.md), [`CircleLayer`](circlelayer.md), [`PolygonLayer`](polygonlayer.md), [`PolylineLayer`](polylinelayer.md) | |
| - Markers and overlays: [`Marker`](marker.md), [`CircleMarker`](circlemarker.md), [`PolygonMarker`](polygonmarker.md), [`PolylineMarker`](polylinemarker.md), [`OverlayImage`](overlayimage.md), [`RotatedOverlayImage`](rotatedoverlayimage.md) | |
| - Attributions: [`SimpleAttribution`](simpleattribution.md), [`RichAttribution`](richattribution.md), [`SourceAttribution`](sourceattribution.md) | |
| - Layers: [`TileLayer`](tilelayer.md), [`MarkerLayer`](markerlayer.md), [`OverlayImageLayer`](overlayimagelayer.md), [`CircleLayer`](circlelayer.md), [`PolygonLayer`](polygonlayer.md), [`PolylineLayer`](polylinelayer.md) | |
| - Markers and overlays: [`Marker`](marker.md), [`CircleMarker`](circlemarker.md), [`PolygonMarker`](polygonmarker.md), [`PolylineMarker`](polylinemarker.md), [`OverlayImage`](overlayimage.md), [`RotatedOverlayImage`](rotatedoverlayimage.md) | |
| - Attributions: [`SimpleAttribution`](simpleattribution.md), [`RichAttribution`](richattribution.md), [`SourceAttribution`](sourceattribution.md) |
| @ft.control("BaseOverlayImage", kw_only=True) | ||
| class BaseOverlayImage(ft.BaseControl): | ||
| """ |
There was a problem hiding this comment.
New controls in this module are declared with kw_only=True, but the other flet_map controls use @ft.control(...) without kw_only. This creates an inconsistent public API (some map controls accept positional args, these do not). Either drop kw_only=True here for consistency, or migrate the rest of the package to keyword-only in a dedicated change so the behavior is uniform.
|
|
||
| @ft.control("PolygonMarker") | ||
| class PolygonMarker(ft.Control): | ||
| class PolygonMarker(ft.BaseControl): |
There was a problem hiding this comment.
Changing to BaseControl removes .visible, no?
Fix #6319
Test Code
Summary by Sourcery
Add map image overlay support and refactor map control parsing/utilities while wrapping more layers in BaseControl for consistency.
New Features:
Enhancements:
Documentation:
Chores: