@@ -16,6 +16,7 @@ import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platf
1616import 'package:stream_transform/stream_transform.dart' ;
1717
1818import '../types/tile_overlay_updates.dart' ;
19+ import '../types/utils/map_configuration_serialization.dart' ;
1920
2021/// Error thrown when an unknown map ID is provided to a method channel API.
2122class UnknownMapIDError extends Error {
@@ -507,18 +508,11 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
507508 /// Defaults to false.
508509 bool useAndroidViewSurface = false ;
509510
510- @override
511- Widget buildViewWithTextDirection (
511+ Widget _buildView (
512512 int creationId,
513513 PlatformViewCreatedCallback onPlatformViewCreated, {
514- required CameraPosition initialCameraPosition,
515- required TextDirection textDirection,
516- Set <Marker > markers = const < Marker > {},
517- Set <Polygon > polygons = const < Polygon > {},
518- Set <Polyline > polylines = const < Polyline > {},
519- Set <Circle > circles = const < Circle > {},
520- Set <TileOverlay > tileOverlays = const < TileOverlay > {},
521- Set <Factory <OneSequenceGestureRecognizer >>? gestureRecognizers,
514+ required MapWidgetConfiguration widgetConfiguration,
515+ MapObjects mapObjects = const MapObjects (),
522516 Map <String , dynamic > mapOptions = const < String , dynamic > {},
523517 }) {
524518 if (defaultTargetPlatform == TargetPlatform .android &&
@@ -596,13 +590,14 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
596590 Map <String , dynamic > mapOptions = const < String , dynamic > {},
597591 }) {
598592 final Map <String , dynamic > creationParams = < String , dynamic > {
599- 'initialCameraPosition' : initialCameraPosition.toMap (),
593+ 'initialCameraPosition' :
594+ widgetConfiguration.initialCameraPosition.toMap (),
600595 'options' : mapOptions,
601- 'markersToAdd' : serializeMarkerSet (markers),
602- 'polygonsToAdd' : serializePolygonSet (polygons),
603- 'polylinesToAdd' : serializePolylineSet (polylines),
604- 'circlesToAdd' : serializeCircleSet (circles),
605- 'tileOverlaysToAdd' : serializeTileOverlaySet (tileOverlays),
596+ 'markersToAdd' : serializeMarkerSet (mapObjects. markers),
597+ 'polygonsToAdd' : serializePolygonSet (mapObjects. polygons),
598+ 'polylinesToAdd' : serializePolylineSet (mapObjects. polylines),
599+ 'circlesToAdd' : serializeCircleSet (mapObjects. circles),
600+ 'tileOverlaysToAdd' : serializeTileOverlaySet (mapObjects. tileOverlays),
606601 };
607602
608603 if (defaultTargetPlatform == TargetPlatform .android) {
@@ -615,8 +610,7 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
615610 ) {
616611 return AndroidViewSurface (
617612 controller: controller as AndroidViewController ,
618- gestureRecognizers: gestureRecognizers ??
619- const < Factory <OneSequenceGestureRecognizer >> {},
613+ gestureRecognizers: widgetConfiguration.gestureRecognizers,
620614 hitTestBehavior: PlatformViewHitTestBehavior .opaque,
621615 );
622616 },
@@ -625,7 +619,7 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
625619 PlatformViewsService .initSurfaceAndroidView (
626620 id: params.id,
627621 viewType: 'plugins.flutter.io/google_maps' ,
628- layoutDirection: textDirection,
622+ layoutDirection: widgetConfiguration. textDirection,
629623 creationParams: creationParams,
630624 creationParamsCodec: const StandardMessageCodec (),
631625 onFocus: () => params.onFocusChanged (true ),
@@ -645,7 +639,7 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
645639 return AndroidView (
646640 viewType: 'plugins.flutter.io/google_maps' ,
647641 onPlatformViewCreated: onPlatformViewCreated,
648- gestureRecognizers: gestureRecognizers,
642+ gestureRecognizers: widgetConfiguration. gestureRecognizers,
649643 creationParams: creationParams,
650644 creationParamsCodec: const StandardMessageCodec (),
651645 );
@@ -654,7 +648,7 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
654648 return UiKitView (
655649 viewType: 'plugins.flutter.io/google_maps' ,
656650 onPlatformViewCreated: onPlatformViewCreated,
657- gestureRecognizers: gestureRecognizers,
651+ gestureRecognizers: widgetConfiguration. gestureRecognizers,
658652 creationParams: creationParams,
659653 creationParamsCodec: const StandardMessageCodec (),
660654 );
@@ -664,6 +658,53 @@ class MethodChannelGoogleMapsFlutter extends GoogleMapsFlutterPlatform {
664658 '$defaultTargetPlatform is not yet supported by the maps plugin' );
665659 }
666660
661+ @override
662+ Widget buildViewWithConfiguration (
663+ int creationId,
664+ PlatformViewCreatedCallback onPlatformViewCreated, {
665+ required MapWidgetConfiguration widgetConfiguration,
666+ MapConfiguration mapConfiguration = const MapConfiguration (),
667+ MapObjects mapObjects = const MapObjects (),
668+ }) {
669+ return _buildView (
670+ creationId,
671+ onPlatformViewCreated,
672+ widgetConfiguration: widgetConfiguration,
673+ mapObjects: mapObjects,
674+ mapOptions: jsonForMapConfiguration (mapConfiguration),
675+ );
676+ }
677+
678+ @override
679+ Widget buildViewWithTextDirection (
680+ int creationId,
681+ PlatformViewCreatedCallback onPlatformViewCreated, {
682+ required CameraPosition initialCameraPosition,
683+ required TextDirection textDirection,
684+ Set <Marker > markers = const < Marker > {},
685+ Set <Polygon > polygons = const < Polygon > {},
686+ Set <Polyline > polylines = const < Polyline > {},
687+ Set <Circle > circles = const < Circle > {},
688+ Set <TileOverlay > tileOverlays = const < TileOverlay > {},
689+ Set <Factory <OneSequenceGestureRecognizer >>? gestureRecognizers,
690+ Map <String , dynamic > mapOptions = const < String , dynamic > {},
691+ }) {
692+ return _buildView (
693+ creationId,
694+ onPlatformViewCreated,
695+ widgetConfiguration: MapWidgetConfiguration (
696+ initialCameraPosition: initialCameraPosition,
697+ textDirection: textDirection),
698+ mapObjects: MapObjects (
699+ markers: markers,
700+ polygons: polygons,
701+ polylines: polylines,
702+ circles: circles,
703+ tileOverlays: tileOverlays),
704+ mapOptions: mapOptions,
705+ );
706+ }
707+
667708 @override
668709 Widget buildView (
669710 int creationId,
0 commit comments