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; +type MapOptions = Pick & { + extra?: Record; +}; export default class extends AbstractMapController { providerOptionsValue: Pick; 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; +}; 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 & { attribution: string; options: Record; } | false; + extra?: Record; }; export default class extends AbstractMapController { 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 & { tileLayer: { url: string; attribution: string; options: Record } | false; + extra?: Record; }; 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: '© OpenStreetMap', ), + 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, ]; } }