diff --git a/src/Map/src/Bridge/Google/assets/dist/map_controller.d.ts b/src/Map/src/Bridge/Google/assets/dist/map_controller.d.ts
index 6f2efe0aae3..9c34c81b767 100644
--- a/src/Map/src/Bridge/Google/assets/dist/map_controller.d.ts
+++ b/src/Map/src/Bridge/Google/assets/dist/map_controller.d.ts
@@ -1,7 +1,9 @@
 import type { LoaderOptions } from '@googlemaps/js-api-loader';
 import AbstractMapController from '@symfony/ux-map';
 import type { Icon, InfoWindowWithoutPositionDefinition, MarkerDefinition, Point, PolygonDefinition, PolylineDefinition } from '@symfony/ux-map';
-type MapOptions = Pick<google.maps.MapOptions, 'mapId' | 'gestureHandling' | 'backgroundColor' | 'disableDoubleClickZoom' | 'zoomControl' | 'zoomControlOptions' | 'mapTypeControl' | 'mapTypeControlOptions' | 'streetViewControl' | 'streetViewControlOptions' | 'fullscreenControl' | 'fullscreenControlOptions'>;
+type MapOptions = Pick<google.maps.MapOptions, 'mapId' | 'gestureHandling' | 'backgroundColor' | 'disableDoubleClickZoom' | 'zoomControl' | 'zoomControlOptions' | 'mapTypeControl' | 'mapTypeControlOptions' | 'streetViewControl' | 'streetViewControlOptions' | 'fullscreenControl' | 'fullscreenControlOptions'> & {
+    extra?: Record<string, unknown>;
+};
 export default class extends AbstractMapController<MapOptions, google.maps.Map, google.maps.marker.AdvancedMarkerElementOptions, google.maps.marker.AdvancedMarkerElement, google.maps.InfoWindowOptions, google.maps.InfoWindow, google.maps.PolygonOptions, google.maps.Polygon, google.maps.PolylineOptions, google.maps.Polyline> {
     providerOptionsValue: Pick<LoaderOptions, 'apiKey' | 'id' | 'language' | 'region' | 'nonce' | 'retries' | 'url' | 'version' | 'libraries'>;
     map: google.maps.Map;
diff --git a/src/Map/src/Bridge/Google/assets/dist/map_controller.js b/src/Map/src/Bridge/Google/assets/dist/map_controller.js
index 1bc19b99e50..9b81b098fbf 100644
--- a/src/Map/src/Bridge/Google/assets/dist/map_controller.js
+++ b/src/Map/src/Bridge/Google/assets/dist/map_controller.js
@@ -160,6 +160,7 @@ class map_controller extends default_1 {
         options.fullscreenControl = typeof options.fullscreenControlOptions !== 'undefined';
         return new _google.maps.Map(this.element, {
             ...options,
+            ...options.extra,
             center,
             zoom,
         });
diff --git a/src/Map/src/Bridge/Google/assets/src/map_controller.ts b/src/Map/src/Bridge/Google/assets/src/map_controller.ts
index db073bc7732..4b570896372 100644
--- a/src/Map/src/Bridge/Google/assets/src/map_controller.ts
+++ b/src/Map/src/Bridge/Google/assets/src/map_controller.ts
@@ -33,7 +33,9 @@ type MapOptions = Pick<
     | 'streetViewControlOptions'
     | 'fullscreenControl'
     | 'fullscreenControlOptions'
->;
+> & {
+    extra?: Record<string, unknown>;
+};
 
 let _google: typeof google;
 
@@ -135,6 +137,7 @@ export default class extends AbstractMapController<
 
         return new _google.maps.Map(this.element, {
             ...options,
+            ...options.extra,
             center,
             zoom,
         });
diff --git a/src/Map/src/Bridge/Google/src/GoogleOptions.php b/src/Map/src/Bridge/Google/src/GoogleOptions.php
index 68d6bbd6810..cbdd1afd645 100644
--- a/src/Map/src/Bridge/Google/src/GoogleOptions.php
+++ b/src/Map/src/Bridge/Google/src/GoogleOptions.php
@@ -36,6 +36,7 @@ public function __construct(
         private StreetViewControlOptions $streetViewControlOptions = new StreetViewControlOptions(),
         private bool $fullscreenControl = true,
         private FullscreenControlOptions $fullscreenControlOptions = new FullscreenControlOptions(),
+        private array $extra = [],
     ) {
     }
 
@@ -132,6 +133,13 @@ public function fullscreenControlOptions(FullscreenControlOptions $fullscreenCon
         return $this;
     }
 
+    public function extra(array $extra): self
+    {
+        $this->extra = $extra;
+
+        return $this;
+    }
+
     /**
      * @internal
      */
@@ -174,6 +182,7 @@ public function toArray(): array
             'gestureHandling' => $this->gestureHandling->value,
             'backgroundColor' => $this->backgroundColor,
             'disableDoubleClickZoom' => $this->disableDoubleClickZoom,
+            'extra' => $this->extra,
         ];
 
         if ($this->zoomControl) {
diff --git a/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.d.ts b/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.d.ts
index f0d9085f83c..cfcdb6d4d74 100644
--- a/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.d.ts
+++ b/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.d.ts
@@ -9,6 +9,7 @@ type MapOptions = Pick<LeafletMapOptions, 'center' | 'zoom'> & {
         attribution: string;
         options: Record<string, unknown>;
     } | false;
+    extra?: Record<string, unknown>;
 };
 export default class extends AbstractMapController<MapOptions, L.Map, MarkerOptions, L.Marker, PopupOptions, L.Popup, PolygonOptions, L.Polygon, PolylineOptions, L.Polyline> {
     map: L.Map;
diff --git a/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.js b/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.js
index 5529e713951..3ec90940422 100644
--- a/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.js
+++ b/src/Map/src/Bridge/Leaflet/assets/dist/map_controller.js
@@ -142,6 +142,7 @@ class map_controller extends default_1 {
     doCreateMap({ center, zoom, options, }) {
         const map = L.map(this.element, {
             ...options,
+            ...options.extra,
             center: center === null ? undefined : center,
             zoom: zoom === null ? undefined : zoom,
         });
diff --git a/src/Map/src/Bridge/Leaflet/assets/src/map_controller.ts b/src/Map/src/Bridge/Leaflet/assets/src/map_controller.ts
index dbc733b96c9..bc4e42960b5 100644
--- a/src/Map/src/Bridge/Leaflet/assets/src/map_controller.ts
+++ b/src/Map/src/Bridge/Leaflet/assets/src/map_controller.ts
@@ -20,6 +20,7 @@ import type {
 
 type MapOptions = Pick<LeafletMapOptions, 'center' | 'zoom'> & {
     tileLayer: { url: string; attribution: string; options: Record<string, unknown> } | false;
+    extra?: Record<string, unknown>;
 };
 
 export default class extends AbstractMapController<
@@ -77,6 +78,7 @@ export default class extends AbstractMapController<
     }: { center: Point | null; zoom: number | null; options: MapOptions }): L.Map {
         const map = L.map(this.element, {
             ...options,
+            ...options.extra,
             center: center === null ? undefined : center,
             zoom: zoom === null ? undefined : zoom,
         });
diff --git a/src/Map/src/Bridge/Leaflet/src/LeafletOptions.php b/src/Map/src/Bridge/Leaflet/src/LeafletOptions.php
index 4edcdca23ff..16b0cf67f9a 100644
--- a/src/Map/src/Bridge/Leaflet/src/LeafletOptions.php
+++ b/src/Map/src/Bridge/Leaflet/src/LeafletOptions.php
@@ -24,6 +24,7 @@ public function __construct(
             url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
             attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
         ),
+        private array $extra = [],
     ) {
     }
 
@@ -34,6 +35,13 @@ public function tileLayer(TileLayer|false $tileLayer): self
         return $this;
     }
 
+    public function extra(array $extra): self
+    {
+        $this->extra = $extra;
+
+        return $this;
+    }
+
     /**
      * @internal
      */
@@ -41,6 +49,7 @@ public static function fromArray(array $array): MapOptionsInterface
     {
         return new self(
             tileLayer: $array['tileLayer'] ? TileLayer::fromArray($array['tileLayer']) : false,
+            extra: $array['extra'] ?? []
         );
     }
 
@@ -51,6 +60,7 @@ public function toArray(): array
     {
         return [
             'tileLayer' => $this->tileLayer ? $this->tileLayer->toArray() : false,
+            'extra' => $this->extra,
         ];
     }
 }