Sitelet https://github.com/flutter/packages/pull/11952
Skip to content

[google_maps_flutter_web] Avoid replacing advanced marker content on move - #11952

Merged
auto-submit[bot] merged 2 commits into
flutter:mainfrom
Gibbo97:AdvancedMarker-with-BitmapDescriptor.bytes-flickers
Sep 8, 2026
Merged

auto-submit[bot] merged 2 commits into
flutter:mainfrom
Gibbo97:AdvancedMarker-with-BitmapDescriptor.bytes-flickers

Conversation

@Gibbo97

@Gibbo97 Gibbo97 commented Jun 22, 2026 •

Copy link
Copy Markdown
Contributor

Description

Avoid replacing an AdvancedMarkerElement's DOM content when a marker update changes only its position. Recreating byte-backed bitmap content produces a new blob-backed image node, which causes the marker to disappear or flicker while moving.

The web implementation now tracks the marker properties that affect rendered content (icon configuration, alpha, visibility, and rotation). Position-only updates preserve the existing DOM node; visual changes still replace it.

Fixes flutter/flutter#188291.

Tests

  • Added web integration coverage for repeated position updates using both BitmapDescriptor.bytes and BytesMapBitmap.
  • Added coverage that visual configuration changes replace the content.
  • Ran formatting, analysis, Dart tests, package validation, and publish checks for google_maps_flutter_web.
  • Ran advanced_markers_test.dart through flutter drive in Chrome.

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

@Gibbo97
Gibbo97 force-pushed the AdvancedMarker-with-BitmapDescriptor.bytes-flickers branch from 7bb26ca to c55c9d9 Compare August 26, 2026 21:43
@Gibbo97 Gibbo97 changed the title Avoid replacing advanced marker content on move [google_maps_flutter_web] Avoid replacing advanced marker content on move Aug 26, 2026
@Gibbo97
Gibbo97 marked this pull request as ready for review August 26, 2026 21:50

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request resolves a flickering issue for byte-backed advanced markers on the web platform by caching marker configurations and conditionally updating marker content only when properties like alpha, visibility, rotation, or icon configuration change. Tests have been added to verify this behavior. The review feedback suggests optimizing the configuration matching logic by caching the BitmapDescriptor instance and performing an identity check first to avoid expensive serialization and deep equality checks on unchanged icons.

@Gibbo97
Gibbo97 force-pushed the AdvancedMarker-with-BitmapDescriptor.bytes-flickers branch from c55c9d9 to ac6e821 Compare August 26, 2026 22:09
@stuartmorgan-g stuartmorgan-g added the triage-web Should be looked at in web triage label Sep 1, 2026

@mdebbar mdebbar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thanks for the fix!

@mdebbar mdebbar added the CICD Run CI/CD label Sep 8, 2026
@flutter-zl
flutter-zl self-requested a review September 8, 2026 20:57
@flutter-zl flutter-zl added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 8, 2026
@auto-submit
auto-submit Bot merged commit e2aa2ea into flutter:main Sep 8, 2026
14 checks passed
pull Bot pushed a commit to Mattlk13/flutter that referenced this pull request Sep 9, 2026
…er#192485)

flutter/packages@9af9c60...36e088a

2026-09-09 daniel.leon@cloudsufi.com [quick_actions] Adopt code-excerpts
for README (flutter/packages#12643)
2026-09-08 65155920+0xharkirat@users.noreply.github.com [camera_web] Fix
TypeError when reading the torch capability (flutter/packages#12647)
2026-09-08 gibbonsj97@gmail.com [google_maps_flutter_web] Avoid
replacing advanced marker content on move (flutter/packages#11952)
2026-09-08 mit@google.com [material_ui][cupertino_ui] Change issue
tracker label in pubspec.yaml (flutter/packages#12792)
2026-09-08 saurabhmirajkar000@gmail.com [material_ui] Fix FilledButton
Material 3 default style docs (flutter/packages#12620)
2026-09-08 21270878+elliette@users.noreply.github.com [infra] Use a
modified no-response workflow in flutter/packages
(flutter/packages#12745)
2026-09-08 21270878+elliette@users.noreply.github.com [material_ui]
Migrate M3 Banner template to use new gen_defaults
(flutter/packages#12734)
2026-09-08 engine-flutter-autoroll@skia.org Roll Flutter from
63170e9 to b444e78 (13 revisions) (flutter/packages#12791)
2026-09-08 fluttergithubbot@gmail.com Sync release-go_router-18.0.1 to
main (flutter/packages#12725)
2026-09-08 fluttergithubbot@gmail.com Sync release-material_ui-1.1.1 to
main (flutter/packages#12726)
2026-09-08 stuartmorgan@google.com [tool] Adopt `platform` 3.2.0
(flutter/packages#12789)
2026-09-07 50643541+Mairramer@users.noreply.github.com [material_ui] Fix
SliverGeometry maxPaintExtent assertion in CarouselView.weighted
(flutter/packages#12563)
2026-09-05 engine-flutter-autoroll@skia.org Roll Flutter from
5a6cfa7 to 63170e9 (15 revisions) (flutter/packages#12767)
2026-09-04 engine-flutter-autoroll@skia.org Manual roll Flutter from
70797e1 to 5a6cfa7 (52 revisions) (flutter/packages#12760)
2026-09-04 brackenavaron@gmail.com [material_ui] port drawer tests over
from flutter/widgets (flutter/packages#12711)
2026-09-04 tarrinneal@gmail.com add cooldown (flutter/packages#12708)
2026-09-04 joeldumasbg@gmail.com [in_app_purchase] Support StoreKit 2
introductory offer eligibility JWS (flutter/packages#12584)
2026-09-04 21270878+elliette@users.noreply.github.com [material_ui]
Migrate M3 Badge template to use new gen_defaults
(flutter/packages#12733)
2026-09-04 stuartmorgan@google.com [google_maps_flutter] Convert heatmap
controller to Swift (flutter/packages#12713)
2026-09-04 97480502+b-luk@users.noreply.github.com [material_ui] Remove
unused `maintainState` constructor parameter in `scaffold_test.dart`
(flutter/packages#12754)
2026-09-04 a1rwulf@users.noreply.github.com [video_player_avfoundation]
Route video over AirPlay (flutter/packages#12490)
2026-09-04 jerome.dellamaria@proton.me [google_fonts] Add
google_fonts_lite file to allow tree-shaking of the other huge files
(flutter/packages#11433)
2026-09-04 engine-flutter-autoroll@skia.org Roll Flutter from
0cbd1a4 to 70797e1 (27 revisions) (flutter/packages#12727)
2026-09-04 stuartmorgan@google.com Update Chrome for stable tests
(flutter/packages#12747)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…move (flutter#11952)

## Description

Avoid replacing an `AdvancedMarkerElement`'s DOM content when a marker update changes only its position. Recreating byte-backed bitmap content produces a new blob-backed image node, which causes the marker to disappear or flicker while moving.

The web implementation now tracks the marker properties that affect rendered content (icon configuration, alpha, visibility, and rotation). Position-only updates preserve the existing DOM node; visual changes still replace it.

Fixes flutter/flutter#188291.

## Tests

- Added web integration coverage for repeated position updates using both `BitmapDescriptor.bytes` and `BytesMapBitmap`.
- Added coverage that visual configuration changes replace the content.
- Ran formatting, analysis, Dart tests, package validation, and publish checks for `google_maps_flutter_web`.
- Ran `advanced_markers_test.dart` through `flutter drive` in Chrome.

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…move (flutter#11952)

## Description

Avoid replacing an `AdvancedMarkerElement`'s DOM content when a marker update changes only its position. Recreating byte-backed bitmap content produces a new blob-backed image node, which causes the marker to disappear or flicker while moving.

The web implementation now tracks the marker properties that affect rendered content (icon configuration, alpha, visibility, and rotation). Position-only updates preserve the existing DOM node; visual changes still replace it.

Fixes flutter/flutter#188291.

## Tests

- Added web integration coverage for repeated position updates using both `BitmapDescriptor.bytes` and `BytesMapBitmap`.
- Added coverage that visual configuration changes replace the content.
- Ran formatting, analysis, Dart tests, package validation, and publish checks for `google_maps_flutter_web`.
- Ran `advanced_markers_test.dart` through `flutter drive` in Chrome.

## Pre-Review Checklist

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: google_maps_flutter platform-web triage-web Should be looked at in web triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[google_maps_flutter_web] AdvancedMarker with BitmapDescriptor.bytes flickers during position updates

4 participants