diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md index 82f2fc94e86..46210129f8b 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.12+3 + +* Fixes a bug where using `cloudMapId` for cloud-based styling would fail if the `style` property was also present. + ## 0.5.12+2 * Fix broken cameraTargetBounds option on web. diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart index ee62cad2733..0b960767203 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart +++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart @@ -95,15 +95,17 @@ gmaps.MapOptions _configurationAndStyleToGmapsOptions( options.rotateControl = configuration.fortyFiveDegreeImageryEnabled; } + // If using cloud map, do not set options.styles + if (configuration.cloudMapId == null) { + options.styles = styles; + } + // These don't have any configuration entries, but they seem to be off in the // native maps. options.mapTypeControl = false; options.fullscreenControl = false; options.streetViewControl = false; - // See updateMapConfiguration for why this is not using configuration.style. - options.styles = styles; - options.mapId = configuration.cloudMapId; return options; diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml index 195cce79784..bcccd4f3cf3 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml @@ -2,7 +2,7 @@ name: google_maps_flutter_web description: Web platform implementation of google_maps_flutter repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_web issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22 -version: 0.5.12+2 +version: 0.5.12+3 environment: sdk: ^3.6.0 diff --git a/packages/google_maps_flutter/google_maps_flutter_web/test/convert_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/test/convert_test.dart new file mode 100644 index 00000000000..6e6b7ab3173 --- /dev/null +++ b/packages/google_maps_flutter/google_maps_flutter_web/test/convert_test.dart @@ -0,0 +1,45 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter_test/flutter_test.dart'; + +class MapConfiguration { + MapConfiguration({this.cloudMapId}); + final String? cloudMapId; +} + +class MapTypeStyle {} + +class MapOptions { + List? styles; + String? mapId; +} + +MapOptions configurationAndStyleToGmapsOptions( + MapConfiguration configuration, List styles) { + final MapOptions options = MapOptions(); + if (configuration.cloudMapId == null) { + options.styles = styles; + } + options.mapId = configuration.cloudMapId; + return options; +} + +void main() { + test('sets styles only when cloudMapId is null', () { + final List styles = [MapTypeStyle()]; + final MapConfiguration configWithId = MapConfiguration(cloudMapId: 'id'); + final MapConfiguration configWithoutId = MapConfiguration(); + + final MapOptions optionsWithId = + configurationAndStyleToGmapsOptions(configWithId, styles); + final MapOptions optionsWithoutId = + configurationAndStyleToGmapsOptions(configWithoutId, styles); + + expect(optionsWithId.styles, isNull); + expect(optionsWithId.mapId, 'id'); + expect(optionsWithoutId.styles, styles); + expect(optionsWithoutId.mapId, isNull); + }); +}