@angular/google-maps 21.0.1 → 21.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-maps.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-event-manager.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/google-map/google-map.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-base-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-bicycling-layer/map-bicycling-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-circle/map-circle.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-directions-renderer/map-directions-renderer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-ground-overlay/map-ground-overlay.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-info-window/map-info-window.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-kml-layer/map-kml-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/marker-utilities.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-marker/map-marker.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/deprecated-map-marker-clusterer/deprecated-map-marker-clusterer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-polygon/map-polygon.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-polyline/map-polyline.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-rectangle/map-rectangle.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-traffic-layer/map-traffic-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-transit-layer/map-transit-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-heatmap-layer/map-heatmap-layer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-advanced-marker/map-advanced-marker.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-marker-clusterer/map-marker-clusterer.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/google-maps-module.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-directions-renderer/map-directions-service.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-geocoder/map-geocoder.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgZone} from '@angular/core';\nimport {BehaviorSubject, Observable, Subscriber} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\ninterface ListenerHandle {\n remove(): void;\n}\n\ntype MapEventManagerTarget =\n | {\n addListener<T extends unknown[]>(\n name: string,\n callback: (...args: T) => void,\n ): google.maps.MapsEventListener | undefined;\n\n addEventListener?<T extends unknown[]>(name: string, callback: (...args: T) => void): void;\n removeEventListener?<T extends unknown[]>(name: string, callback: (...args: T) => void): void;\n }\n | undefined;\n\n/** Manages event on a Google Maps object, ensuring that events are added only when necessary. */\nexport class MapEventManager {\n /** Pending listeners that were added before the target was set. */\n private _pending: {observable: Observable<unknown>; observer: Subscriber<unknown>}[] = [];\n private _listeners: ListenerHandle[] = [];\n private _targetStream = new BehaviorSubject<MapEventManagerTarget>(undefined);\n\n /** Clears all currently-registered event listeners. */\n private _clearListeners() {\n for (const listener of this._listeners) {\n listener.remove();\n }\n\n this._listeners = [];\n }\n\n constructor(private _ngZone: NgZone) {}\n\n /**\n * Gets an observable that adds an event listener to the map when a consumer subscribes to it.\n * @param name Name of the event for which the observable is being set up.\n * @param type Type of the event (e.g. one going to a DOM node or a custom Maps one).\n */\n getLazyEmitter<T>(name: string, type?: 'custom' | 'native'): Observable<T> {\n return this._targetStream.pipe(\n switchMap(target => {\n const observable = new Observable<T>(observer => {\n // If the target hasn't been initialized yet, cache the observer so it can be added later.\n if (!target) {\n this._pending.push({observable, observer});\n return undefined;\n }\n\n let handle: ListenerHandle;\n const listener = (event: T) => {\n this._ngZone.run(() => observer.next(event));\n };\n\n if (type === 'native') {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n (!target.addEventListener || !target.removeEventListener)\n ) {\n throw new Error(\n 'Maps event target that uses native events must have `addEventListener` and `removeEventListener` methods.',\n );\n }\n\n target.addEventListener!(name, listener);\n handle = {remove: () => target.removeEventListener!(name, listener)};\n } else {\n handle = target.addListener(name, listener)!;\n }\n\n // If there's an error when initializing the Maps API (e.g. a wrong API key), it will\n // return a dummy object that returns `undefined` from `addListener` (see #26514).\n if (!handle) {\n observer.complete();\n return undefined;\n }\n\n this._listeners.push(handle);\n return () => handle.remove();\n });\n\n return observable;\n }),\n );\n }\n\n /** Sets the current target that the manager should bind events to. */\n setTarget(target: MapEventManagerTarget) {\n const currentTarget = this._targetStream.value;\n\n if (target === currentTarget) {\n return;\n }\n\n // Clear the listeners from the pre-existing target.\n if (currentTarget) {\n this._clearListeners();\n this._pending = [];\n }\n\n this._targetStream.next(target);\n\n // Add the listeners that were bound before the map was initialized.\n this._pending.forEach(subscriber => subscriber.observable.subscribe(subscriber.observer));\n this._pending = [];\n }\n\n /** Destroys the manager and clears the event listeners. */\n destroy() {\n this._clearListeners();\n this._pending = [];\n this._targetStream.complete();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n PLATFORM_ID,\n NgZone,\n SimpleChanges,\n EventEmitter,\n inject,\n} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\nimport {Observable} from 'rxjs';\nimport {MapEventManager} from '../map-event-manager';\nimport {take} from 'rxjs/operators';\n\ninterface GoogleMapsWindow extends Window {\n gm_authFailure?: () => void;\n google?: typeof google;\n}\n\n/** default options set to the Googleplex */\nexport const DEFAULT_OPTIONS: google.maps.MapOptions = {\n center: {lat: 37.421995, lng: -122.084092},\n zoom: 17,\n // Note: the type conversion here isn't necessary for our CI, but it resolves a g3 failure.\n mapTypeId: 'roadmap' as unknown as google.maps.MapTypeId,\n};\n\n/** Arbitrary default height for the map element */\nexport const DEFAULT_HEIGHT = '500px';\n/** Arbitrary default width for the map element */\nexport const DEFAULT_WIDTH = '500px';\n\n/**\n * Angular component that renders a Google Map via the Google Maps JavaScript\n * API.\n * @see https://developers.google.com/maps/documentation/javascript/reference/\n */\n@Component({\n selector: 'google-map',\n exportAs: 'googleMap',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<div class=\"map-container\"></div><ng-content />',\n encapsulation: ViewEncapsulation.None,\n})\nexport class GoogleMap implements OnChanges, OnInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private _mapEl: HTMLElement;\n private _existingAuthFailureCallback: GoogleMapsWindow['gm_authFailure'];\n\n /**\n * The underlying google.maps.Map object\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#Map\n */\n googleMap?: google.maps.Map;\n\n /** Whether we're currently rendering inside a browser. */\n _isBrowser: boolean;\n\n /** Height of the map. Set this to `null` if you'd like to control the height through CSS. */\n @Input() height: string | number | null = DEFAULT_HEIGHT;\n\n /** Width of the map. Set this to `null` if you'd like to control the width through CSS. */\n @Input() width: string | number | null = DEFAULT_WIDTH;\n\n /**\n * The Map ID of the map. This parameter cannot be set or changed after a map is instantiated.\n * See: https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.mapId\n */\n @Input() mapId: string | undefined;\n\n /**\n * Type of map that should be rendered. E.g. hybrid map, terrain map etc.\n * See: https://developers.google.com/maps/documentation/javascript/reference/map#MapTypeId\n */\n @Input() mapTypeId: google.maps.MapTypeId | undefined;\n\n @Input()\n set center(center: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._center = center;\n }\n private _center: google.maps.LatLngLiteral | google.maps.LatLng;\n\n @Input()\n set zoom(zoom: number) {\n this._zoom = zoom;\n }\n private _zoom: number;\n\n @Input()\n set options(options: google.maps.MapOptions) {\n this._options = options || DEFAULT_OPTIONS;\n }\n private _options = DEFAULT_OPTIONS;\n\n /** Event emitted when the map is initialized. */\n @Output() readonly mapInitialized: EventEmitter<google.maps.Map> =\n new EventEmitter<google.maps.Map>();\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/events#auth-errors\n */\n @Output() readonly authFailure: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.bounds_changed\n */\n @Output() readonly boundsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('bounds_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.center_changed\n */\n @Output() readonly centerChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('center_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent | google.maps.IconMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent | google.maps.IconMouseEvent>(\n 'click',\n );\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.drag\n */\n @Output() readonly mapDrag: Observable<void> = this._eventManager.getLazyEmitter<void>('drag');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragend\n */\n @Output() readonly mapDragend: Observable<void> =\n this._eventManager.getLazyEmitter<void>('dragend');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragstart\n */\n @Output() readonly mapDragstart: Observable<void> =\n this._eventManager.getLazyEmitter<void>('dragstart');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.heading_changed\n */\n @Output() readonly headingChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('heading_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.idle\n */\n @Output() readonly idle: Observable<void> = this._eventManager.getLazyEmitter<void>('idle');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.maptypeid_changed\n */\n @Output() readonly maptypeidChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('maptypeid_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mousemove\n */\n @Output()\n readonly mapMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseout\n */\n @Output() readonly mapMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseover\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/map#Map.projection_changed\n */\n @Output() readonly projectionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('projection_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.rightclick\n */\n @Output() readonly mapRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilesloaded\n */\n @Output() readonly tilesloaded: Observable<void> =\n this._eventManager.getLazyEmitter<void>('tilesloaded');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilt_changed\n */\n @Output() readonly tiltChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('tilt_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.zoom_changed\n */\n @Output() readonly zoomChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zoom_changed');\n\n constructor(...args: unknown[]);\n\n constructor() {\n const platformId = inject<Object>(PLATFORM_ID);\n this._isBrowser = isPlatformBrowser(platformId);\n\n if (this._isBrowser) {\n const googleMapsWindow: GoogleMapsWindow = window;\n if (!googleMapsWindow.google && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'Namespace google not found, cannot construct embedded google ' +\n 'map. Please install the Google Maps JavaScript API: ' +\n 'https://developers.google.com/maps/documentation/javascript/' +\n 'tutorial#Loading_the_Maps_API',\n );\n }\n\n this._existingAuthFailureCallback = googleMapsWindow.gm_authFailure;\n googleMapsWindow.gm_authFailure = () => {\n if (this._existingAuthFailureCallback) {\n this._existingAuthFailureCallback();\n }\n this.authFailure.emit();\n };\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['height'] || changes['width']) {\n this._setSize();\n }\n\n const googleMap = this.googleMap;\n\n if (googleMap) {\n if (changes['options']) {\n googleMap.setOptions(this._combineOptions());\n }\n\n if (changes['center'] && this._center) {\n googleMap.setCenter(this._center);\n }\n\n // Note that the zoom can be zero.\n if (changes['zoom'] && this._zoom != null) {\n googleMap.setZoom(this._zoom);\n }\n\n if (changes['mapTypeId'] && this.mapTypeId) {\n googleMap.setMapTypeId(this.mapTypeId);\n }\n }\n }\n\n ngOnInit() {\n // It should be a noop during server-side rendering.\n if (this._isBrowser) {\n this._mapEl = this._elementRef.nativeElement.querySelector('.map-container')!;\n this._setSize();\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n if (google.maps.Map) {\n this._initialize(google.maps.Map);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps\n .importLibrary('maps')\n .then(lib => this._initialize((lib as google.maps.MapsLibrary).Map));\n });\n }\n }\n }\n\n private _initialize(mapConstructor: typeof google.maps.Map) {\n this._ngZone.runOutsideAngular(() => {\n this.googleMap = new mapConstructor(this._mapEl, this._combineOptions());\n this._eventManager.setTarget(this.googleMap);\n this.mapInitialized.emit(this.googleMap);\n });\n }\n\n ngOnDestroy() {\n this.mapInitialized.complete();\n this._eventManager.destroy();\n\n if (this._isBrowser) {\n const googleMapsWindow: GoogleMapsWindow = window;\n googleMapsWindow.gm_authFailure = this._existingAuthFailureCallback;\n }\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.fitBounds\n */\n fitBounds(\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n padding?: number | google.maps.Padding,\n ) {\n this._assertInitialized();\n this.googleMap.fitBounds(bounds, padding);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panBy\n */\n panBy(x: number, y: number) {\n this._assertInitialized();\n this.googleMap.panBy(x, y);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panTo\n */\n panTo(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\n this._assertInitialized();\n this.googleMap.panTo(latLng);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panToBounds\n */\n panToBounds(\n latLngBounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n padding?: number | google.maps.Padding,\n ) {\n this._assertInitialized();\n this.googleMap.panToBounds(latLngBounds, padding);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.googleMap.getBounds() || null;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getCenter\n */\n getCenter(): google.maps.LatLng | undefined {\n this._assertInitialized();\n return this.googleMap.getCenter();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getClickableIcons\n */\n getClickableIcons(): boolean | undefined {\n this._assertInitialized();\n return this.googleMap.getClickableIcons();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getHeading\n */\n getHeading(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getHeading();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getMapTypeId\n */\n getMapTypeId(): google.maps.MapTypeId | string | undefined {\n this._assertInitialized();\n return this.googleMap.getMapTypeId();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getProjection\n */\n getProjection(): google.maps.Projection | null {\n this._assertInitialized();\n return this.googleMap.getProjection() || null;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getStreetView\n */\n getStreetView(): google.maps.StreetViewPanorama {\n this._assertInitialized();\n return this.googleMap.getStreetView();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getTilt\n */\n getTilt(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getTilt();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getZoom\n */\n getZoom(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getZoom();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.controls\n */\n get controls(): google.maps.MVCArray<Node>[] {\n this._assertInitialized();\n return this.googleMap.controls;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.data\n */\n get data(): google.maps.Data {\n this._assertInitialized();\n return this.googleMap.data;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mapTypes\n */\n get mapTypes(): google.maps.MapTypeRegistry {\n this._assertInitialized();\n return this.googleMap.mapTypes;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.overlayMapTypes\n */\n get overlayMapTypes(): google.maps.MVCArray<google.maps.MapType | null> {\n this._assertInitialized();\n return this.googleMap.overlayMapTypes;\n }\n\n /** Returns a promise that resolves when the map has been initialized. */\n _resolveMap(): Promise<google.maps.Map> {\n return this.googleMap\n ? Promise.resolve(this.googleMap)\n : this.mapInitialized.pipe(take(1)).toPromise();\n }\n\n private _setSize() {\n if (this._mapEl) {\n const styles = this._mapEl.style;\n styles.height =\n this.height === null ? '' : coerceCssPixelValue(this.height) || DEFAULT_HEIGHT;\n styles.width = this.width === null ? '' : coerceCssPixelValue(this.width) || DEFAULT_WIDTH;\n }\n }\n\n /** Combines the center and zoom and the other map options into a single object */\n private _combineOptions(): google.maps.MapOptions {\n const options = this._options || {};\n return {\n ...options,\n // It's important that we set **some** kind of `center` and `zoom`, otherwise\n // Google Maps will render a blank rectangle which looks broken.\n center: this._center || options.center || DEFAULT_OPTIONS.center,\n zoom: this._zoom ?? options.zoom ?? DEFAULT_OPTIONS.zoom,\n // Passing in an undefined `mapTypeId` seems to break tile loading\n // so make sure that we have some kind of default (see #22082).\n mapTypeId: this.mapTypeId || options.mapTypeId || DEFAULT_OPTIONS.mapTypeId,\n mapId: this.mapId || options.mapId,\n };\n }\n\n /** Asserts that the map has been initialized. */\n private _assertInitialized(): asserts this is {googleMap: google.maps.Map} {\n if (!this.googleMap && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n }\n}\n\nconst cssUnitsPattern = /([A-Za-z%]+)$/;\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value: any): string {\n if (value == null) {\n return '';\n }\n\n return cssUnitsPattern.test(value) ? value : `${value}px`;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, NgZone, OnDestroy, OnInit, inject} from '@angular/core';\n\nimport {GoogleMap} from './google-map/google-map';\n\n@Directive({\n selector: 'map-base-layer',\n exportAs: 'mapBaseLayer',\n})\nexport class MapBaseLayer implements OnInit, OnDestroy {\n protected readonly _map = inject(GoogleMap);\n protected readonly _ngZone = inject(NgZone);\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n this._initializeObject();\n });\n this._assertInitialized();\n this._setMap();\n }\n }\n\n ngOnDestroy() {\n this._unsetMap();\n }\n\n private _assertInitialized() {\n if (!this._map.googleMap) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n }\n\n protected _initializeObject() {}\n protected _setMap() {}\n protected _unsetMap() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, EventEmitter, NgZone, OnDestroy, OnInit, Output, inject} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Bicycling Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\n@Directive({\n selector: 'map-bicycling-layer',\n exportAs: 'mapBicyclingLayer',\n})\nexport class MapBicyclingLayer implements OnInit, OnDestroy {\n private _map = inject(GoogleMap);\n private _zone = inject(NgZone);\n\n /**\n * The underlying google.maps.BicyclingLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\n bicyclingLayer?: google.maps.BicyclingLayer;\n\n /** Event emitted when the bicycling layer is initialized. */\n @Output() readonly bicyclingLayerInitialized: EventEmitter<google.maps.BicyclingLayer> =\n new EventEmitter<google.maps.BicyclingLayer>();\n\n ngOnInit(): void {\n if (this._map._isBrowser) {\n if (google.maps.BicyclingLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.BicyclingLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).BicyclingLayer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(map: google.maps.Map, layerConstructor: typeof google.maps.BicyclingLayer) {\n this._zone.runOutsideAngular(() => {\n this.bicyclingLayer = new layerConstructor();\n this.bicyclingLayerInitialized.emit(this.bicyclingLayer);\n this._assertLayerInitialized();\n this.bicyclingLayer.setMap(map);\n });\n }\n\n ngOnDestroy() {\n this.bicyclingLayer?.setMap(null);\n }\n\n private _assertLayerInitialized(): asserts this is {bicyclingLayer: google.maps.BicyclingLayer} {\n if (!this.bicyclingLayer) {\n throw Error(\n 'Cannot interact with a Google Map Bicycling Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Circle via the Google Maps JavaScript API.\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\n@Directive({\n selector: 'map-circle',\n exportAs: 'mapCircle',\n})\nexport class MapCircle implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.CircleOptions>({});\n private readonly _center = new BehaviorSubject<\n google.maps.LatLng | google.maps.LatLngLiteral | undefined\n >(undefined);\n private readonly _radius = new BehaviorSubject<number | undefined>(undefined);\n private readonly _destroyed = new Subject<void>();\n\n /**\n * Underlying google.maps.Circle object.\n *\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\n circle?: google.maps.Circle; // initialized in ngOnInit\n\n @Input()\n set options(options: google.maps.CircleOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set center(center: google.maps.LatLng | google.maps.LatLngLiteral) {\n this._center.next(center);\n }\n\n @Input()\n set radius(radius: number) {\n this._radius.next(radius);\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.center_changed\n */\n @Output() readonly centerChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('center_changed');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.click\n */\n @Output() readonly circleClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dblclick\n */\n @Output() readonly circleDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.drag\n */\n @Output() readonly circleDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragend\n */\n @Output() readonly circleDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragstart\n */\n @Output() readonly circleDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousedown\n */\n @Output() readonly circleMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousemove\n */\n @Output() readonly circleMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseout\n */\n @Output() readonly circleMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseover\n */\n @Output() readonly circleMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseup\n */\n @Output() readonly circleMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.radius_changed\n */\n @Output() readonly radiusChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('radius_changed');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.rightclick\n */\n @Output() readonly circleRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /** Event emitted when the circle is initialized. */\n @Output() readonly circleInitialized: EventEmitter<google.maps.Circle> =\n new EventEmitter<google.maps.Circle>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._map._isBrowser) {\n return;\n }\n\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Circle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Circle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Circle, options);\n },\n );\n });\n }\n });\n }\n\n private _initialize(\n map: google.maps.Map,\n circleConstructor: typeof google.maps.Circle,\n options: google.maps.CircleOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.circle = new circleConstructor(options);\n this._assertInitialized();\n this.circle.setMap(map);\n this._eventManager.setTarget(this.circle);\n this.circleInitialized.emit(this.circle);\n this._watchForOptionsChanges();\n this._watchForCenterChanges();\n this._watchForRadiusChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.circle?.setMap(null);\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.circle.getBounds();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getCenter\n */\n getCenter(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.circle.getCenter();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.circle.getDraggable();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.circle.getEditable();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getRadius\n */\n getRadius(): number {\n this._assertInitialized();\n return this.circle.getRadius();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.circle.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.CircleOptions> {\n return combineLatest([this._options, this._center, this._radius]).pipe(\n map(([options, center, radius]) => {\n const combinedOptions: google.maps.CircleOptions = {\n ...options,\n center: center || options.center,\n radius: radius !== undefined ? radius : options.radius,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.circle.setOptions(options);\n });\n }\n\n private _watchForCenterChanges() {\n this._center.pipe(takeUntil(this._destroyed)).subscribe(center => {\n if (center) {\n this._assertInitialized();\n this.circle.setCenter(center);\n }\n });\n }\n\n private _watchForRadiusChanges() {\n this._radius.pipe(takeUntil(this._destroyed)).subscribe(radius => {\n if (radius !== undefined) {\n this._assertInitialized();\n this.circle.setRadius(radius);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {circle: google.maps.Circle} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.circle) {\n throw Error(\n 'Cannot interact with a Google Map Circle before it has been ' +\n 'initialized. Please wait for the Circle to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Directions Renderer via the Google Maps\n * JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsRenderer\n */\n@Directive({\n selector: 'map-directions-renderer',\n exportAs: 'mapDirectionsRenderer',\n})\nexport class MapDirectionsRenderer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions.directions\n */\n @Input()\n set directions(directions: google.maps.DirectionsResult) {\n this._directions = directions;\n }\n private _directions: google.maps.DirectionsResult;\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions\n */\n @Input()\n set options(options: google.maps.DirectionsRendererOptions) {\n this._options = options;\n }\n private _options: google.maps.DirectionsRendererOptions;\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.directions_changed\n */\n @Output()\n readonly directionsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('directions_changed');\n\n /** Event emitted when the directions renderer is initialized. */\n @Output() readonly directionsRendererInitialized: EventEmitter<google.maps.DirectionsRenderer> =\n new EventEmitter<google.maps.DirectionsRenderer>();\n\n /** The underlying google.maps.DirectionsRenderer object. */\n directionsRenderer?: google.maps.DirectionsRenderer;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (google.maps.DirectionsRenderer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.DirectionsRenderer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('routes')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.RoutesLibrary).DirectionsRenderer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n rendererConstructor: typeof google.maps.DirectionsRenderer,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.directionsRenderer = new rendererConstructor(this._combineOptions());\n this._assertInitialized();\n this.directionsRenderer.setMap(map);\n this._eventManager.setTarget(this.directionsRenderer);\n this.directionsRendererInitialized.emit(this.directionsRenderer);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.directionsRenderer) {\n if (changes['options']) {\n this.directionsRenderer.setOptions(this._combineOptions());\n }\n\n if (changes['directions'] && this._directions !== undefined) {\n this.directionsRenderer.setDirections(this._directions);\n }\n }\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this.directionsRenderer?.setMap(null);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getDirections\n */\n getDirections(): google.maps.DirectionsResult | null {\n this._assertInitialized();\n return this.directionsRenderer.getDirections();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getPanel\n */\n getPanel(): Node | null {\n this._assertInitialized();\n return this.directionsRenderer.getPanel();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getRouteIndex\n */\n getRouteIndex(): number {\n this._assertInitialized();\n return this.directionsRenderer.getRouteIndex();\n }\n\n private _combineOptions(): google.maps.DirectionsRendererOptions {\n const options = this._options || {};\n return {\n ...options,\n directions: this._directions || options.directions,\n map: this._googleMap.googleMap,\n };\n }\n\n private _assertInitialized(): asserts this is {\n directionsRenderer: google.maps.DirectionsRenderer;\n } {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.directionsRenderer) {\n throw Error(\n 'Cannot interact with a Google Map Directions Renderer before it has been ' +\n 'initialized. Please wait for the Directions Renderer to load before trying ' +\n 'to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Ground Overlay via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\n@Directive({\n selector: 'map-ground-overlay',\n exportAs: 'mapGroundOverlay',\n})\nexport class MapGroundOverlay implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _opacity = new BehaviorSubject<number>(1);\n private readonly _url = new BehaviorSubject<string>('');\n private readonly _bounds = new BehaviorSubject<\n google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral | undefined\n >(undefined);\n private readonly _destroyed = new Subject<void>();\n private _hasWatchers: boolean;\n\n /**\n * The underlying google.maps.GroundOverlay object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\n groundOverlay?: google.maps.GroundOverlay;\n\n /** URL of the image that will be shown in the overlay. */\n @Input()\n set url(url: string) {\n this._url.next(url);\n }\n\n /** Bounds for the overlay. */\n @Input()\n get bounds(): google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral {\n return this._bounds.value!;\n }\n set bounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral) {\n this._bounds.next(bounds);\n }\n\n /** Whether the overlay is clickable */\n @Input() clickable: boolean = false;\n\n /** Opacity of the overlay. */\n @Input()\n set opacity(opacity: number) {\n this._opacity.next(opacity);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /** Event emitted when the ground overlay is initialized. */\n @Output() readonly groundOverlayInitialized: EventEmitter<google.maps.GroundOverlay> =\n new EventEmitter<google.maps.GroundOverlay>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n // The ground overlay setup is slightly different from the other Google Maps objects in that\n // we have to recreate the `GroundOverlay` object whenever the bounds change, because\n // Google Maps doesn't provide an API to update the bounds of an existing overlay.\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (this.groundOverlay) {\n this.groundOverlay.setMap(null);\n this.groundOverlay = undefined;\n }\n\n if (!bounds) {\n return;\n }\n\n if (google.maps.GroundOverlay && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.GroundOverlay, bounds);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).GroundOverlay, bounds);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n overlayConstructor: typeof google.maps.GroundOverlay,\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.groundOverlay = new overlayConstructor(this._url.getValue(), bounds, {\n clickable: this.clickable,\n opacity: this._opacity.value,\n });\n this._assertInitialized();\n this.groundOverlay.setMap(map);\n this._eventManager.setTarget(this.groundOverlay);\n this.groundOverlayInitialized.emit(this.groundOverlay);\n\n // We only need to set up the watchers once.\n if (!this._hasWatchers) {\n this._hasWatchers = true;\n this._watchForOpacityChanges();\n this._watchForUrlChanges();\n }\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.groundOverlay?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.groundOverlay.getBounds();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getOpacity\n */\n getOpacity(): number {\n this._assertInitialized();\n return this.groundOverlay.getOpacity();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getUrl\n */\n getUrl(): string {\n this._assertInitialized();\n return this.groundOverlay.getUrl();\n }\n\n private _watchForOpacityChanges() {\n this._opacity.pipe(takeUntil(this._destroyed)).subscribe(opacity => {\n if (opacity != null) {\n this.groundOverlay?.setOpacity(opacity);\n }\n });\n }\n\n private _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n const overlay = this.groundOverlay;\n\n if (overlay) {\n overlay.set('url', url);\n // Google Maps only redraws the overlay if we re-set the map.\n overlay.setMap(null);\n overlay.setMap(this._map.googleMap!);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {groundOverlay: google.maps.GroundOverlay} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.groundOverlay) {\n throw Error(\n 'Cannot interact with a Google Map GroundOverlay before it has been initialized. ' +\n 'Please wait for the GroundOverlay to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\n\n/**\n * Angular component that renders a Google Maps info window via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window\n */\n@Directive({\n selector: 'map-info-window',\n exportAs: 'mapInfoWindow',\n host: {'style': 'display: none'},\n})\nexport class MapInfoWindow implements OnInit, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.InfoWindowOptions>({});\n private readonly _position = new BehaviorSubject<\n google.maps.LatLngLiteral | google.maps.LatLng | undefined\n >(undefined);\n private readonly _destroy = new Subject<void>();\n\n /**\n * Underlying google.maps.InfoWindow\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow\n */\n infoWindow?: google.maps.InfoWindow;\n\n @Input()\n set options(options: google.maps.InfoWindowOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set position(position: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._position.next(position);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.closeclick\n */\n @Output() readonly closeclick: Observable<void> =\n this._eventManager.getLazyEmitter<void>('closeclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.content_changed\n */\n @Output() readonly contentChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('content_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.domready\n */\n @Output() readonly domready: Observable<void> =\n this._eventManager.getLazyEmitter<void>('domready');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.position_changed\n */\n @Output() readonly positionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('position_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.zindex_changed\n */\n @Output() readonly zindexChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zindex_changed');\n\n /** Event emitted when the info window is initialized. */\n @Output() readonly infoWindowInitialized: EventEmitter<google.maps.InfoWindow> =\n new EventEmitter<google.maps.InfoWindow>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.InfoWindow) {\n this._initialize(google.maps.InfoWindow, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps.importLibrary('maps').then(lib => {\n this._initialize((lib as google.maps.MapsLibrary).InfoWindow, options);\n });\n });\n }\n });\n }\n }\n\n private _initialize(\n infoWindowConstructor: typeof google.maps.InfoWindow,\n options: google.maps.InfoWindowOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.infoWindow = new infoWindowConstructor(options);\n this._eventManager.setTarget(this.infoWindow);\n this.infoWindowInitialized.emit(this.infoWindow);\n this._watchForOptionsChanges();\n this._watchForPositionChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroy.next();\n this._destroy.complete();\n\n // If no info window has been created on the server, we do not try closing it.\n // On the server, an info window cannot be created and this would cause errors.\n if (this.infoWindow) {\n this.close();\n }\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.close\n */\n close() {\n this._assertInitialized();\n this.infoWindow.close();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getContent\n */\n getContent(): string | Node | null {\n this._assertInitialized();\n return this.infoWindow.getContent() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.getPosition\n */\n getPosition(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.infoWindow.getPosition() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getZIndex\n */\n getZIndex(): number {\n this._assertInitialized();\n return this.infoWindow.getZIndex();\n }\n\n /**\n * Opens the MapInfoWindow using the provided AdvancedMarkerElement.\n * @deprecated Use the `open` method instead.\n * @breaking-change 20.0.0\n */\n openAdvancedMarkerElement(\n advancedMarkerElement: google.maps.marker.AdvancedMarkerElement,\n content?: string | Element | Text,\n ): void {\n this.open(\n {\n getAnchor: () => advancedMarkerElement,\n },\n undefined,\n content,\n );\n }\n\n /**\n * Opens the MapInfoWindow using the provided anchor. If the anchor is not set,\n * then the position property of the options input is used instead.\n */\n open(anchor?: MapAnchorPoint, shouldFocus?: boolean, content?: string | Element | Text): void {\n this._assertInitialized();\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && anchor && !anchor.getAnchor) {\n throw new Error(\n 'Specified anchor does not implement the `getAnchor` method. ' +\n 'It cannot be used to open an info window.',\n );\n }\n\n const anchorObject = anchor ? anchor.getAnchor() : undefined;\n\n // Prevent the info window from initializing when trying to reopen on the same anchor.\n // Note that when the window is opened for the first time, the anchor will always be\n // undefined. If that's the case, we have to allow it to open in order to handle the\n // case where the window doesn't have an anchor, but is placed at a particular position.\n if (this.infoWindow.get('anchor') !== anchorObject || !anchorObject) {\n // If no explicit content is provided, it is taken from the DOM node.\n // If it is, we need to hide it so it doesn't take up space on the page.\n this._elementRef.nativeElement.style.display = content ? 'none' : '';\n if (content) {\n this.infoWindow.setContent(content);\n }\n this.infoWindow.open({\n map: this._googleMap.googleMap,\n anchor: anchorObject,\n shouldFocus,\n });\n }\n }\n\n private _combineOptions(): Observable<google.maps.InfoWindowOptions> {\n return combineLatest([this._options, this._position]).pipe(\n map(([options, position]) => {\n const combinedOptions: google.maps.InfoWindowOptions = {\n ...options,\n position: position || options.position,\n content: this._elementRef.nativeElement,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroy)).subscribe(options => {\n this._assertInitialized();\n this.infoWindow.setOptions(options);\n });\n }\n\n private _watchForPositionChanges() {\n this._position.pipe(takeUntil(this._destroy)).subscribe(position => {\n if (position) {\n this._assertInitialized();\n this.infoWindow.setPosition(position);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {infoWindow: google.maps.InfoWindow} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.infoWindow) {\n throw Error(\n 'Cannot interact with a Google Map Info Window before it has been ' +\n 'initialized. Please wait for the Info Window to load before trying to interact with ' +\n 'it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps KML Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\n@Directive({\n selector: 'map-kml-layer',\n exportAs: 'mapKmlLayer',\n})\nexport class MapKmlLayer implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.KmlLayerOptions>({});\n private readonly _url = new BehaviorSubject<string>('');\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.KmlLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\n kmlLayer?: google.maps.KmlLayer;\n\n @Input()\n set options(options: google.maps.KmlLayerOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set url(url: string) {\n this._url.next(url);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.click\n */\n @Output() readonly kmlClick: Observable<google.maps.KmlMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.KmlMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml\n * #KmlLayer.defaultviewport_changed\n */\n @Output() readonly defaultviewportChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('defaultviewport_changed');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.status_changed\n */\n @Output() readonly statusChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('status_changed');\n\n /** Event emitted when the KML layer is initialized. */\n @Output() readonly kmlLayerInitialized: EventEmitter<google.maps.KmlLayer> =\n new EventEmitter<google.maps.KmlLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.KmlLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.KmlLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).KmlLayer, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n layerConstructor: typeof google.maps.KmlLayer,\n options: google.maps.KmlLayerOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.kmlLayer = new layerConstructor(options);\n this._assertInitialized();\n this.kmlLayer.setMap(map);\n this._eventManager.setTarget(this.kmlLayer);\n this.kmlLayerInitialized.emit(this.kmlLayer);\n this._watchForOptionsChanges();\n this._watchForUrlChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.kmlLayer?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getDefaultViewport\n */\n getDefaultViewport(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.kmlLayer.getDefaultViewport();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getMetadata\n */\n getMetadata(): google.maps.KmlLayerMetadata | null {\n this._assertInitialized();\n return this.kmlLayer.getMetadata();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getStatus\n */\n getStatus(): google.maps.KmlLayerStatus {\n this._assertInitialized();\n return this.kmlLayer.getStatus();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getUrl\n */\n getUrl(): string {\n this._assertInitialized();\n return this.kmlLayer.getUrl();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getZIndex\n */\n getZIndex(): number {\n this._assertInitialized();\n return this.kmlLayer.getZIndex();\n }\n\n private _combineOptions(): Observable<google.maps.KmlLayerOptions> {\n return combineLatest([this._options, this._url]).pipe(\n map(([options, url]) => {\n const combinedOptions: google.maps.KmlLayerOptions = {\n ...options,\n url: url || options.url,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n if (this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setOptions(options);\n }\n });\n }\n\n private _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n if (url && this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setUrl(url);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {kmlLayer: google.maps.KmlLayer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.kmlLayer) {\n throw Error(\n 'Cannot interact with a Google Map KmlLayer before it has been ' +\n 'initialized. Please wait for the KmlLayer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/** Marker types from the Google Maps API. */\nexport type Marker = google.maps.Marker | google.maps.marker.AdvancedMarkerElement;\n\n/** Interface that should be implemented by directives that wrap marker APIs. */\nexport interface MarkerDirective {\n _resolveMarker(): Promise<Marker>;\n}\n\n/** Token that marker directives can use to expose themselves to the clusterer. */\nexport const MAP_MARKER = new InjectionToken<MarkerDirective>('MAP_MARKER');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\nimport {MAP_MARKER, MarkerDirective} from '../marker-utilities';\n\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nexport const DEFAULT_MARKER_OPTIONS = {\n position: {lat: 37.421995, lng: -122.084092},\n};\n\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\n@Directive({\n selector: 'map-marker',\n exportAs: 'mapMarker',\n providers: [\n {\n provide: MAP_MARKER,\n useExisting: MapMarker,\n },\n ],\n})\nexport class MapMarker implements OnInit, OnChanges, OnDestroy, MapAnchorPoint, MarkerDirective {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * Title of the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.title\n */\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n /**\n * Position of the marker. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.position\n */\n @Input()\n set position(position: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._position = position;\n }\n private _position: google.maps.LatLngLiteral | google.maps.LatLng;\n\n /**\n * Label for the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.label\n */\n @Input()\n set label(label: string | google.maps.MarkerLabel) {\n this._label = label;\n }\n private _label: string | google.maps.MarkerLabel;\n\n /**\n * Whether the marker is clickable. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.clickable\n */\n @Input()\n set clickable(clickable: boolean) {\n this._clickable = clickable;\n }\n private _clickable: boolean;\n\n /**\n * Options used to configure the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\n */\n @Input()\n set options(options: google.maps.MarkerOptions) {\n this._options = options;\n }\n private _options: google.maps.MarkerOptions;\n\n /**\n * Icon to be used for the marker.\n * See: https://developers.google.com/maps/documentation/javascript/reference/marker#Icon\n */\n @Input()\n set icon(icon: string | google.maps.Icon | google.maps.Symbol) {\n this._icon = icon;\n }\n private _icon: string | google.maps.Icon | google.maps.Symbol;\n\n /**\n * Whether the marker is visible.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.visible\n */\n @Input()\n set visible(value: boolean) {\n this._visible = value;\n }\n private _visible: boolean;\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.animation_changed\n */\n @Output() readonly animationChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('animation_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.clickable_changed\n */\n @Output() readonly clickableChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clickable_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.cursor_changed\n */\n @Output() readonly cursorChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('cursor_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.drag\n */\n @Output() readonly mapDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragend\n */\n @Output() readonly mapDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.draggable_changed\n */\n @Output() readonly draggableChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('draggable_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragstart\n */\n @Output() readonly mapDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.flat_changed\n */\n @Output() readonly flatChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('flat_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.icon_changed\n */\n @Output() readonly iconChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('icon_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mousedown\n */\n @Output() readonly mapMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseout\n */\n @Output() readonly mapMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseover\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseup\n */\n @Output() readonly mapMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.position_changed\n */\n @Output() readonly positionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('position_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.rightclick\n */\n @Output() readonly mapRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.shape_changed\n */\n @Output() readonly shapeChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('shape_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.title_changed\n */\n @Output() readonly titleChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('title_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.visible_changed\n */\n @Output() readonly visibleChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('visible_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.zindex_changed\n */\n @Output() readonly zindexChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zindex_changed');\n\n /** Event emitted when the marker is initialized. */\n @Output() readonly markerInitialized: EventEmitter<google.maps.Marker> =\n new EventEmitter<google.maps.Marker>();\n\n /**\n * The underlying google.maps.Marker object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker#Marker\n */\n marker?: google.maps.Marker;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n\n if (google.maps.Marker && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.Marker);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MarkerLibrary).Marker);\n },\n );\n });\n }\n }\n\n private _initialize(map: google.maps.Map, markerConstructor: typeof google.maps.Marker) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.marker = new markerConstructor(this._combineOptions());\n this._assertInitialized();\n this.marker.setMap(map);\n this._eventManager.setTarget(this.marker);\n this.markerInitialized.next(this.marker);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {marker, _title, _position, _label, _clickable, _icon, _visible} = this;\n\n if (marker) {\n if (changes['options']) {\n marker.setOptions(this._combineOptions());\n }\n\n if (changes['title'] && _title !== undefined) {\n marker.setTitle(_title);\n }\n\n if (changes['position'] && _position) {\n marker.setPosition(_position);\n }\n\n if (changes['label'] && _label !== undefined) {\n marker.setLabel(_label);\n }\n\n if (changes['clickable'] && _clickable !== undefined) {\n marker.setClickable(_clickable);\n }\n\n if (changes['icon'] && _icon) {\n marker.setIcon(_icon);\n }\n\n if (changes['visible'] && _visible !== undefined) {\n marker.setVisible(_visible);\n }\n }\n }\n\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n this.marker?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getAnimation\n */\n getAnimation(): google.maps.Animation | null {\n this._assertInitialized();\n return this.marker.getAnimation() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getClickable\n */\n getClickable(): boolean {\n this._assertInitialized();\n return this.marker.getClickable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getCursor\n */\n getCursor(): string | null {\n this._assertInitialized();\n return this.marker.getCursor() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return !!this.marker.getDraggable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getIcon\n */\n getIcon(): string | google.maps.Icon | google.maps.Symbol | null {\n this._assertInitialized();\n return this.marker.getIcon() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getLabel\n */\n getLabel(): google.maps.MarkerLabel | string | null {\n this._assertInitialized();\n return this.marker.getLabel() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getOpacity\n */\n getOpacity(): number | null {\n this._assertInitialized();\n return this.marker.getOpacity() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getPosition\n */\n getPosition(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.marker.getPosition() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getShape\n */\n getShape(): google.maps.MarkerShape | null {\n this._assertInitialized();\n return this.marker.getShape() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getTitle\n */\n getTitle(): string | null {\n this._assertInitialized();\n return this.marker.getTitle() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.marker.getVisible();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getZIndex\n */\n getZIndex(): number | null {\n this._assertInitialized();\n return this.marker.getZIndex() || null;\n }\n\n /** Gets the anchor point that can be used to attach other Google Maps objects. */\n getAnchor(): google.maps.MVCObject {\n this._assertInitialized();\n return this.marker;\n }\n\n /** Returns a promise that resolves when the marker has been initialized. */\n _resolveMarker(): Promise<google.maps.Marker> {\n return this.marker\n ? Promise.resolve(this.marker)\n : this.markerInitialized.pipe(take(1)).toPromise();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.MarkerOptions {\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n label: this._label || options.label,\n clickable: this._clickable ?? options.clickable,\n map: this._googleMap.googleMap,\n icon: this._icon || options.icon,\n visible: this._visible ?? options.visible,\n };\n }\n\n private _assertInitialized(): asserts this is {marker: google.maps.Marker} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.marker) {\n throw Error(\n 'Cannot interact with a Google Map Marker before it has been ' +\n 'initialized. Please wait for the Marker to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapMarker} from '../map-marker/map-marker';\nimport {\n AriaLabelFn,\n Calculator,\n Cluster,\n ClusterIconStyle,\n MarkerClusterer as MarkerClustererInstance,\n MarkerClustererOptions,\n} from './deprecated-marker-clusterer-types';\n\n/** Default options for a clusterer. */\nconst DEFAULT_CLUSTERER_OPTIONS: MarkerClustererOptions = {};\n\n/**\n * The clusterer has to be defined and referred to as a global variable,\n * otherwise it'll cause issues when minified through Closure.\n */\ndeclare const MarkerClusterer: typeof MarkerClustererInstance;\n\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n *\n * @deprecated This component is using a deprecated clustering implementation. Use the\n * `map-marker-clusterer` component instead.\n * @breaking-change 21.0.0\n *\n */\n@Component({\n selector: 'deprecated-map-marker-clusterer',\n exportAs: 'mapMarkerClusterer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content/>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeprecatedMapMarkerClusterer\n implements OnInit, AfterContentInit, OnChanges, OnDestroy\n{\n private readonly _googleMap = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _currentMarkers = new Set<google.maps.Marker>();\n private readonly _eventManager = new MapEventManager(inject(NgZone));\n private readonly _destroy = new Subject<void>();\n\n /** Whether the clusterer is allowed to be initialized. */\n private readonly _canInitialize = this._googleMap._isBrowser;\n\n @Input()\n ariaLabelFn: AriaLabelFn = () => '';\n\n @Input()\n set averageCenter(averageCenter: boolean) {\n this._averageCenter = averageCenter;\n }\n private _averageCenter: boolean;\n\n @Input() batchSize?: number;\n\n @Input()\n set batchSizeIE(batchSizeIE: number) {\n this._batchSizeIE = batchSizeIE;\n }\n private _batchSizeIE: number;\n\n @Input()\n set calculator(calculator: Calculator) {\n this._calculator = calculator;\n }\n private _calculator: Calculator;\n\n @Input()\n set clusterClass(clusterClass: string) {\n this._clusterClass = clusterClass;\n }\n private _clusterClass: string;\n\n @Input()\n set enableRetinaIcons(enableRetinaIcons: boolean) {\n this._enableRetinaIcons = enableRetinaIcons;\n }\n private _enableRetinaIcons: boolean;\n\n @Input()\n set gridSize(gridSize: number) {\n this._gridSize = gridSize;\n }\n private _gridSize: number;\n\n @Input()\n set ignoreHidden(ignoreHidden: boolean) {\n this._ignoreHidden = ignoreHidden;\n }\n private _ignoreHidden: boolean;\n\n @Input()\n set imageExtension(imageExtension: string) {\n this._imageExtension = imageExtension;\n }\n private _imageExtension: string;\n\n @Input()\n set imagePath(imagePath: string) {\n this._imagePath = imagePath;\n }\n private _imagePath: string;\n\n @Input()\n set imageSizes(imageSizes: number[]) {\n this._imageSizes = imageSizes;\n }\n private _imageSizes: number[];\n\n @Input()\n set maxZoom(maxZoom: number) {\n this._maxZoom = maxZoom;\n }\n private _maxZoom: number;\n\n @Input()\n set minimumClusterSize(minimumClusterSize: number) {\n this._minimumClusterSize = minimumClusterSize;\n }\n private _minimumClusterSize: number;\n\n @Input()\n set styles(styles: ClusterIconStyle[]) {\n this._styles = styles;\n }\n private _styles: ClusterIconStyle[];\n\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n @Input()\n set zIndex(zIndex: number) {\n this._zIndex = zIndex;\n }\n private _zIndex: number;\n\n @Input()\n set zoomOnClick(zoomOnClick: boolean) {\n this._zoomOnClick = zoomOnClick;\n }\n private _zoomOnClick: boolean;\n\n @Input()\n set options(options: MarkerClustererOptions) {\n this._options = options;\n }\n private _options: MarkerClustererOptions;\n\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/\n * _google_markerclustererplus.html#clusteringbegin\n */\n @Output() readonly clusteringbegin: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clusteringbegin');\n\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/_google_markerclustererplus.html#clusteringend\n */\n @Output() readonly clusteringend: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clusteringend');\n\n /** Emits when a cluster has been clicked. */\n @Output()\n readonly clusterClick: Observable<Cluster> = this._eventManager.getLazyEmitter<Cluster>('click');\n\n @ContentChildren(MapMarker, {descendants: true}) _markers: QueryList<MapMarker>;\n\n /**\n * The underlying MarkerClusterer object.\n *\n * See\n * googlemaps.github.io/v3-utility-library/classes/\n * _google_markerclustererplus.markerclusterer.html\n */\n markerClusterer?: MarkerClustererInstance;\n\n /** Event emitted when the clusterer is initialized. */\n @Output() readonly markerClustererInitialized: EventEmitter<MarkerClustererInstance> =\n new EventEmitter<MarkerClustererInstance>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._canInitialize) {\n this._ngZone.runOutsideAngular(() => {\n this._googleMap._resolveMap().then(map => {\n if (\n typeof MarkerClusterer !== 'function' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(\n 'MarkerClusterer class not found, cannot construct a marker cluster. ' +\n 'Please install the MarkerClustererPlus library: ' +\n 'https://github.com/googlemaps/js-markerclustererplus',\n );\n }\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this.markerClusterer = this._ngZone.runOutsideAngular(() => {\n return new MarkerClusterer(map, [], this._combineOptions());\n });\n\n this._assertInitialized();\n this._eventManager.setTarget(this.markerClusterer);\n this.markerClustererInitialized.emit(this.markerClusterer);\n });\n });\n }\n }\n\n ngAfterContentInit() {\n if (this._canInitialize) {\n if (this.markerClusterer) {\n this._watchForMarkerChanges();\n } else {\n this.markerClustererInitialized\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(() => this._watchForMarkerChanges());\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {\n markerClusterer: clusterer,\n ariaLabelFn,\n _averageCenter,\n _batchSizeIE,\n _calculator,\n _styles,\n _clusterClass,\n _enableRetinaIcons,\n _gridSize,\n _ignoreHidden,\n _imageExtension,\n _imagePath,\n _imageSizes,\n _maxZoom,\n _minimumClusterSize,\n _title,\n _zIndex,\n _zoomOnClick,\n } = this;\n\n if (clusterer) {\n if (changes['options']) {\n clusterer.setOptions(this._combineOptions());\n }\n if (changes['ariaLabelFn']) {\n clusterer.ariaLabelFn = ariaLabelFn;\n }\n if (changes['averageCenter'] && _averageCenter !== undefined) {\n clusterer.setAverageCenter(_averageCenter);\n }\n if (changes['batchSizeIE'] && _batchSizeIE !== undefined) {\n clusterer.setBatchSizeIE(_batchSizeIE);\n }\n if (changes['calculator'] && !!_calculator) {\n clusterer.setCalculator(_calculator);\n }\n if (changes['clusterClass'] && _clusterClass !== undefined) {\n clusterer.setClusterClass(_clusterClass);\n }\n if (changes['enableRetinaIcons'] && _enableRetinaIcons !== undefined) {\n clusterer.setEnableRetinaIcons(_enableRetinaIcons);\n }\n if (changes['gridSize'] && _gridSize !== undefined) {\n clusterer.setGridSize(_gridSize);\n }\n if (changes['ignoreHidden'] && _ignoreHidden !== undefined) {\n clusterer.setIgnoreHidden(_ignoreHidden);\n }\n if (changes['imageExtension'] && _imageExtension !== undefined) {\n clusterer.setImageExtension(_imageExtension);\n }\n if (changes['imagePath'] && _imagePath !== undefined) {\n clusterer.setImagePath(_imagePath);\n }\n if (changes['imageSizes'] && _imageSizes) {\n clusterer.setImageSizes(_imageSizes);\n }\n if (changes['maxZoom'] && _maxZoom !== undefined) {\n clusterer.setMaxZoom(_maxZoom);\n }\n if (changes['minimumClusterSize'] && _minimumClusterSize !== undefined) {\n clusterer.setMinimumClusterSize(_minimumClusterSize);\n }\n if (changes['styles'] && _styles) {\n clusterer.setStyles(_styles);\n }\n if (changes['title'] && _title !== undefined) {\n clusterer.setTitle(_title);\n }\n if (changes['zIndex'] && _zIndex !== undefined) {\n clusterer.setZIndex(_zIndex);\n }\n if (changes['zoomOnClick'] && _zoomOnClick !== undefined) {\n clusterer.setZoomOnClick(_zoomOnClick);\n }\n }\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._eventManager.destroy();\n this.markerClusterer?.setMap(null);\n }\n\n fitMapToMarkers(padding: number | google.maps.Padding) {\n this._assertInitialized();\n this.markerClusterer.fitMapToMarkers(padding);\n }\n\n getAverageCenter(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getAverageCenter();\n }\n\n getBatchSizeIE(): number {\n this._assertInitialized();\n return this.markerClusterer.getBatchSizeIE();\n }\n\n getCalculator(): Calculator {\n this._assertInitialized();\n return this.markerClusterer.getCalculator();\n }\n\n getClusterClass(): string {\n this._assertInitialized();\n return this.markerClusterer.getClusterClass();\n }\n\n getClusters(): Cluster[] {\n this._assertInitialized();\n return this.markerClusterer.getClusters();\n }\n\n getEnableRetinaIcons(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getEnableRetinaIcons();\n }\n\n getGridSize(): number {\n this._assertInitialized();\n return this.markerClusterer.getGridSize();\n }\n\n getIgnoreHidden(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getIgnoreHidden();\n }\n\n getImageExtension(): string {\n this._assertInitialized();\n return this.markerClusterer.getImageExtension();\n }\n\n getImagePath(): string {\n this._assertInitialized();\n return this.markerClusterer.getImagePath();\n }\n\n getImageSizes(): number[] {\n this._assertInitialized();\n return this.markerClusterer.getImageSizes();\n }\n\n getMaxZoom(): number {\n this._assertInitialized();\n return this.markerClusterer.getMaxZoom();\n }\n\n getMinimumClusterSize(): number {\n this._assertInitialized();\n return this.markerClusterer.getMinimumClusterSize();\n }\n\n getStyles(): ClusterIconStyle[] {\n this._assertInitialized();\n return this.markerClusterer.getStyles();\n }\n\n getTitle(): string {\n this._assertInitialized();\n return this.markerClusterer.getTitle();\n }\n\n getTotalClusters(): number {\n this._assertInitialized();\n return this.markerClusterer.getTotalClusters();\n }\n\n getTotalMarkers(): number {\n this._assertInitialized();\n return this.markerClusterer.getTotalMarkers();\n }\n\n getZIndex(): number {\n this._assertInitialized();\n return this.markerClusterer.getZIndex();\n }\n\n getZoomOnClick(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getZoomOnClick();\n }\n\n private _combineOptions(): MarkerClustererOptions {\n const options = this._options || DEFAULT_CLUSTERER_OPTIONS;\n return {\n ...options,\n ariaLabelFn: this.ariaLabelFn ?? options.ariaLabelFn,\n averageCenter: this._averageCenter ?? options.averageCenter,\n batchSize: this.batchSize ?? options.batchSize,\n batchSizeIE: this._batchSizeIE ?? options.batchSizeIE,\n calculator: this._calculator ?? options.calculator,\n clusterClass: this._clusterClass ?? options.clusterClass,\n enableRetinaIcons: this._enableRetinaIcons ?? options.enableRetinaIcons,\n gridSize: this._gridSize ?? options.gridSize,\n ignoreHidden: this._ignoreHidden ?? options.ignoreHidden,\n imageExtension: this._imageExtension ?? options.imageExtension,\n imagePath: this._imagePath ?? options.imagePath,\n imageSizes: this._imageSizes ?? options.imageSizes,\n maxZoom: this._maxZoom ?? options.maxZoom,\n minimumClusterSize: this._minimumClusterSize ?? options.minimumClusterSize,\n styles: this._styles ?? options.styles,\n title: this._title ?? options.title,\n zIndex: this._zIndex ?? options.zIndex,\n zoomOnClick: this._zoomOnClick ?? options.zoomOnClick,\n };\n }\n\n private _watchForMarkerChanges() {\n this._assertInitialized();\n\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(this._markers).then(markers => {\n const initialMarkers: google.maps.Marker[] = [];\n for (const marker of markers) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n });\n });\n\n this._markers.changes\n .pipe(takeUntil(this._destroy))\n .subscribe((markerComponents: MapMarker[]) => {\n this._assertInitialized();\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(markerComponents).then(markers => {\n const newMarkers = new Set(markers);\n const markersToAdd: google.maps.Marker[] = [];\n const markersToRemove: google.maps.Marker[] = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.repaint();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n });\n });\n });\n }\n\n private _getInternalMarkers(\n markers: MapMarker[] | QueryList<MapMarker>,\n ): Promise<google.maps.Marker[]> {\n return Promise.all(markers.map(markerComponent => markerComponent._resolveMarker()));\n }\n\n private _assertInitialized(): asserts this is {markerClusterer: MarkerClustererInstance} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.markerClusterer) {\n throw Error(\n 'Cannot interact with a MarkerClusterer before it has been initialized. ' +\n 'Please wait for the MarkerClusterer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Polygon via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\n@Directive({\n selector: 'map-polygon',\n exportAs: 'mapPolygon',\n})\nexport class MapPolygon implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.PolygonOptions>({});\n private readonly _paths = new BehaviorSubject<\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Polygon object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\n polygon?: google.maps.Polygon;\n\n @Input()\n set options(options: google.maps.PolygonOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set paths(\n paths:\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[],\n ) {\n this._paths.next(paths);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.click\n */\n @Output() readonly polygonClick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('click');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dblclick\n */\n @Output() readonly polygonDblclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('dblclick');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.drag\n */\n @Output() readonly polygonDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragend\n */\n @Output() readonly polygonDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragstart\n */\n @Output() readonly polygonDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousedown\n */\n @Output() readonly polygonMousedown: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousedown');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousemove\n */\n @Output() readonly polygonMousemove: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousemove');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseout\n */\n @Output() readonly polygonMouseout: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseout');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseover\n */\n @Output() readonly polygonMouseover: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseover');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseup\n */\n @Output() readonly polygonMouseup: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseup');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.rightclick\n */\n @Output() readonly polygonRightclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('rightclick');\n\n /** Event emitted when the polygon is initialized. */\n @Output() readonly polygonInitialized: EventEmitter<google.maps.Polygon> =\n new EventEmitter<google.maps.Polygon>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Polygon && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polygon, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Polygon, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n polygonConstructor: typeof google.maps.Polygon,\n options: google.maps.PolygonOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polygon = new polygonConstructor(options);\n this._assertInitialized();\n this.polygon.setMap(map);\n this._eventManager.setTarget(this.polygon);\n this.polygonInitialized.emit(this.polygon);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polygon?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.polygon.getDraggable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.polygon.getEditable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPath\n */\n getPath(): google.maps.MVCArray<google.maps.LatLng> {\n this._assertInitialized();\n return this.polygon.getPath();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPaths\n */\n getPaths(): google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>> {\n this._assertInitialized();\n return this.polygon.getPaths();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.polygon.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.PolygonOptions> {\n return combineLatest([this._options, this._paths]).pipe(\n map(([options, paths]) => {\n const combinedOptions: google.maps.PolygonOptions = {\n ...options,\n paths: paths || options.paths,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polygon.setOptions(options);\n });\n }\n\n private _watchForPathChanges() {\n this._paths.pipe(takeUntil(this._destroyed)).subscribe(paths => {\n if (paths) {\n this._assertInitialized();\n this.polygon.setPaths(paths);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {polygon: google.maps.Polygon} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polygon) {\n throw Error(\n 'Cannot interact with a Google Map Polygon before it has been ' +\n 'initialized. Please wait for the Polygon to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Polyline via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\n@Directive({\n selector: 'map-polyline',\n exportAs: 'mapPolyline',\n})\nexport class MapPolyline implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.PolylineOptions>({});\n private readonly _path = new BehaviorSubject<\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Polyline object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\n polyline?: google.maps.Polyline;\n\n @Input()\n set options(options: google.maps.PolylineOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set path(\n path:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[],\n ) {\n this._path.next(path);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.click\n */\n @Output() readonly polylineClick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('click');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dblclick\n */\n @Output() readonly polylineDblclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('dblclick');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.drag\n */\n @Output() readonly polylineDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragend\n */\n @Output() readonly polylineDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragstart\n */\n @Output() readonly polylineDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousedown\n */\n @Output() readonly polylineMousedown: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousedown');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousemove\n */\n @Output() readonly polylineMousemove: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousemove');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseout\n */\n @Output() readonly polylineMouseout: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseout');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseover\n */\n @Output() readonly polylineMouseover: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseover');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseup\n */\n @Output() readonly polylineMouseup: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseup');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.rightclick\n */\n @Output() readonly polylineRightclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('rightclick');\n\n /** Event emitted when the polyline is initialized. */\n @Output() readonly polylineInitialized: EventEmitter<google.maps.Polyline> =\n new EventEmitter<google.maps.Polyline>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Polyline && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polyline, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Polyline, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n polylineConstructor: typeof google.maps.Polyline,\n options: google.maps.PolygonOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polyline = new polylineConstructor(options);\n this._assertInitialized();\n this.polyline.setMap(map);\n this._eventManager.setTarget(this.polyline);\n this.polylineInitialized.emit(this.polyline);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polyline?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.polyline.getDraggable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.polyline.getEditable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getPath\n */\n getPath(): google.maps.MVCArray<google.maps.LatLng> {\n this._assertInitialized();\n return this.polyline.getPath();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.polyline.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.PolylineOptions> {\n return combineLatest([this._options, this._path]).pipe(\n map(([options, path]) => {\n const combinedOptions: google.maps.PolylineOptions = {\n ...options,\n path: path || options.path,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polyline.setOptions(options);\n });\n }\n\n private _watchForPathChanges() {\n this._path.pipe(takeUntil(this._destroyed)).subscribe(path => {\n if (path) {\n this._assertInitialized();\n this.polyline.setPath(path);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {polyline: google.maps.Polyline} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polyline) {\n throw Error(\n 'Cannot interact with a Google Map Polyline before it has been ' +\n 'initialized. Please wait for the Polyline to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Rectangle via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\n@Directive({\n selector: 'map-rectangle',\n exportAs: 'mapRectangle',\n})\nexport class MapRectangle implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.RectangleOptions>({});\n private readonly _bounds = new BehaviorSubject<\n google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Rectangle object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\n rectangle?: google.maps.Rectangle;\n\n @Input()\n set options(options: google.maps.RectangleOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set bounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral) {\n this._bounds.next(bounds);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.boundsChanged\n */ @Output() readonly boundsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('bounds_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.click\n */\n @Output() readonly rectangleClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dblclick\n */\n @Output() readonly rectangleDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.drag\n */\n @Output() readonly rectangleDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragend\n */\n @Output() readonly rectangleDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragstart\n */\n @Output() readonly rectangleDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousedown\n */\n @Output() readonly rectangleMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousemove\n */\n @Output() readonly rectangleMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseout\n */\n @Output() readonly rectangleMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseover\n */\n @Output() readonly rectangleMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseup\n */\n @Output() readonly rectangleMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.rightclick\n */\n @Output() readonly rectangleRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /** Event emitted when the rectangle is initialized. */\n @Output() readonly rectangleInitialized: EventEmitter<google.maps.Rectangle> =\n new EventEmitter<google.maps.Rectangle>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Rectangle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Rectangle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Rectangle, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n rectangleConstructor: typeof google.maps.Rectangle,\n options: google.maps.RectangleOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.rectangle = new rectangleConstructor(options);\n this._assertInitialized();\n this.rectangle.setMap(map);\n this._eventManager.setTarget(this.rectangle);\n this.rectangleInitialized.emit(this.rectangle);\n this._watchForOptionsChanges();\n this._watchForBoundsChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.rectangle?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.rectangle.getBounds();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.rectangle.getDraggable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.rectangle.getEditable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.rectangle.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.RectangleOptions> {\n return combineLatest([this._options, this._bounds]).pipe(\n map(([options, bounds]) => {\n const combinedOptions: google.maps.RectangleOptions = {\n ...options,\n bounds: bounds || options.bounds,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.rectangle.setOptions(options);\n });\n }\n\n private _watchForBoundsChanges() {\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (bounds) {\n this._assertInitialized();\n this.rectangle.setBounds(bounds);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {rectangle: google.maps.Rectangle} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.rectangle) {\n throw Error(\n 'Cannot interact with a Google Map Rectangle before it has been initialized. ' +\n 'Please wait for the Rectangle to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Traffic Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\n@Directive({\n selector: 'map-traffic-layer',\n exportAs: 'mapTrafficLayer',\n})\nexport class MapTrafficLayer implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _autoRefresh = new BehaviorSubject<boolean>(true);\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.TrafficLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\n trafficLayer?: google.maps.TrafficLayer;\n\n /**\n * Whether the traffic layer refreshes with updated information automatically.\n */\n @Input()\n set autoRefresh(autoRefresh: boolean) {\n this._autoRefresh.next(autoRefresh);\n }\n\n /** Event emitted when the traffic layer is initialized. */\n @Output() readonly trafficLayerInitialized: EventEmitter<google.maps.TrafficLayer> =\n new EventEmitter<google.maps.TrafficLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.TrafficLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TrafficLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).TrafficLayer, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n layerConstructor: typeof google.maps.TrafficLayer,\n options: google.maps.TrafficLayerOptions,\n ) {\n this._ngZone.runOutsideAngular(() => {\n this.trafficLayer = new layerConstructor(options);\n this._assertInitialized();\n this.trafficLayer.setMap(map);\n this.trafficLayerInitialized.emit(this.trafficLayer);\n this._watchForAutoRefreshChanges();\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this.trafficLayer?.setMap(null);\n }\n\n private _combineOptions(): Observable<google.maps.TrafficLayerOptions> {\n return this._autoRefresh.pipe(\n map(autoRefresh => {\n const combinedOptions: google.maps.TrafficLayerOptions = {autoRefresh};\n return combinedOptions;\n }),\n );\n }\n\n private _watchForAutoRefreshChanges() {\n this._combineOptions()\n .pipe(takeUntil(this._destroyed))\n .subscribe(options => {\n this._assertInitialized();\n this.trafficLayer.setOptions(options);\n });\n }\n\n private _assertInitialized(): asserts this is {trafficLayer: google.maps.TrafficLayer} {\n if (!this.trafficLayer) {\n throw Error(\n 'Cannot interact with a Google Map Traffic Layer before it has been initialized. ' +\n 'Please wait for the Traffic Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, EventEmitter, NgZone, OnDestroy, OnInit, Output, inject} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Transit Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\n@Directive({\n selector: 'map-transit-layer',\n exportAs: 'mapTransitLayer',\n})\nexport class MapTransitLayer implements OnInit, OnDestroy {\n private _map = inject(GoogleMap);\n private _zone = inject(NgZone);\n\n /**\n * The underlying google.maps.TransitLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\n transitLayer?: google.maps.TransitLayer;\n\n /** Event emitted when the transit layer is initialized. */\n @Output() readonly transitLayerInitialized: EventEmitter<google.maps.TransitLayer> =\n new EventEmitter<google.maps.TransitLayer>();\n\n ngOnInit(): void {\n if (this._map._isBrowser) {\n if (google.maps.TransitLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TransitLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).TransitLayer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(map: google.maps.Map, layerConstructor: typeof google.maps.TransitLayer) {\n this._zone.runOutsideAngular(() => {\n this.transitLayer = new layerConstructor();\n this.transitLayerInitialized.emit(this.transitLayer);\n this._assertLayerInitialized();\n this.transitLayer.setMap(map);\n });\n }\n\n ngOnDestroy() {\n this.transitLayer?.setMap(null);\n }\n\n private _assertLayerInitialized(): asserts this is {transitLayer: google.maps.TransitLayer} {\n if (!this.transitLayer) {\n throw Error(\n 'Cannot interact with a Google Map Transit Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n Output,\n EventEmitter,\n inject,\n} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/** Possible data that can be shown on a heatmap layer. */\nexport type HeatmapData =\n | google.maps.MVCArray<\n google.maps.LatLng | google.maps.visualization.WeightedLocation | google.maps.LatLngLiteral\n >\n | (google.maps.LatLng | google.maps.visualization.WeightedLocation | google.maps.LatLngLiteral)[];\n\n/**\n * Angular directive that renders a Google Maps heatmap via the Google Maps JavaScript API.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n@Directive({\n selector: 'map-heatmap-layer',\n exportAs: 'mapHeatmapLayer',\n})\nexport class MapHeatmapLayer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n\n /**\n * Data shown on the heatmap.\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n @Input()\n set data(data: HeatmapData) {\n this._data = data;\n }\n private _data: HeatmapData;\n\n /**\n * Options used to configure the heatmap. See:\n * developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n @Input()\n set options(options: Partial<google.maps.visualization.HeatmapLayerOptions>) {\n this._options = options;\n }\n private _options: Partial<google.maps.visualization.HeatmapLayerOptions>;\n\n /**\n * The underlying google.maps.visualization.HeatmapLayer object.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n heatmap?: google.maps.visualization.HeatmapLayer;\n\n /** Event emitted when the heatmap is initialized. */\n @Output() readonly heatmapInitialized: EventEmitter<google.maps.visualization.HeatmapLayer> =\n new EventEmitter<google.maps.visualization.HeatmapLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (\n !window.google?.maps?.visualization &&\n !window.google?.maps.importLibrary &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(\n 'Namespace `google.maps.visualization` not found, cannot construct heatmap. ' +\n 'Please install the Google Maps JavaScript API with the \"visualization\" library: ' +\n 'https://developers.google.com/maps/documentation/javascript/visualization',\n );\n }\n\n if (google.maps.visualization?.HeatmapLayer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.visualization.HeatmapLayer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([\n this._googleMap._resolveMap(),\n google.maps.importLibrary('visualization'),\n ]).then(([map, lib]) => {\n this._initialize(map, (lib as google.maps.VisualizationLibrary).HeatmapLayer);\n });\n });\n }\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n heatmapConstructor: typeof google.maps.visualization.HeatmapLayer,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.heatmap = new heatmapConstructor(this._combineOptions());\n this._assertInitialized();\n this.heatmap.setMap(map);\n this.heatmapInitialized.emit(this.heatmap);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {_data, heatmap} = this;\n\n if (heatmap) {\n if (changes['options']) {\n heatmap.setOptions(this._combineOptions());\n }\n\n if (changes['data'] && _data !== undefined) {\n heatmap.setData(this._normalizeData(_data));\n }\n }\n }\n\n ngOnDestroy() {\n this.heatmap?.setMap(null);\n }\n\n /**\n * Gets the data that is currently shown on the heatmap.\n * See: developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayer\n */\n getData(): HeatmapData {\n this._assertInitialized();\n return this.heatmap.getData();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.visualization.HeatmapLayerOptions {\n const options = this._options || {};\n return {\n ...options,\n data: this._normalizeData(this._data || options.data || []),\n map: this._googleMap.googleMap,\n };\n }\n\n /**\n * Most Google Maps APIs support both `LatLng` objects and `LatLngLiteral`. The latter is more\n * convenient to write out, because the Google Maps API doesn't have to have been loaded in order\n * to construct them. The `HeatmapLayer` appears to be an exception that only allows a `LatLng`\n * object, or it throws a runtime error. Since it's more convenient and we expect that Angular\n * users will load the API asynchronously, we allow them to pass in a `LatLngLiteral` and we\n * convert it to a `LatLng` object before passing it off to Google Maps.\n */\n private _normalizeData(data: HeatmapData) {\n const result: (google.maps.LatLng | google.maps.visualization.WeightedLocation)[] = [];\n\n data.forEach(item => {\n result.push(isLatLngLiteral(item) ? new google.maps.LatLng(item.lat, item.lng) : item);\n });\n\n return result;\n }\n\n /** Asserts that the heatmap object has been initialized. */\n private _assertInitialized(): asserts this is {heatmap: google.maps.visualization.HeatmapLayer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.heatmap) {\n throw Error(\n 'Cannot interact with a Google Map HeatmapLayer before it has been ' +\n 'initialized. Please wait for the heatmap to load before trying to interact with it.',\n );\n }\n }\n }\n}\n\n/** Asserts that an object is a `LatLngLiteral`. */\nfunction isLatLngLiteral(value: any): value is google.maps.LatLngLiteral {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n inject,\n EventEmitter,\n} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\nimport {MAP_MARKER, MarkerDirective} from '../marker-utilities';\nimport {Observable} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nexport const DEFAULT_MARKER_OPTIONS = {\n position: {lat: 37.221995, lng: -122.184092},\n};\n\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\n@Directive({\n selector: 'map-advanced-marker',\n exportAs: 'mapAdvancedMarker',\n providers: [\n {\n provide: MAP_MARKER,\n useExisting: MapAdvancedMarker,\n },\n ],\n})\nexport class MapAdvancedMarker\n implements OnInit, OnChanges, OnDestroy, MapAnchorPoint, MarkerDirective\n{\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * Rollover text. If provided, an accessibility text (e.g. for use with screen readers) will be added to the AdvancedMarkerElement with the provided value.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.title\n */\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n /**\n * Sets the AdvancedMarkerElement's position. An AdvancedMarkerElement may be constructed without a position, but will not be displayed until its position is provided - for example, by a user's actions or choices. An AdvancedMarkerElement's position can be provided by setting AdvancedMarkerElement.position if not provided at the construction.\n * Note: AdvancedMarkerElement with altitude is only supported on vector maps.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.position\n */\n @Input()\n set position(\n position:\n | google.maps.LatLngLiteral\n | google.maps.LatLng\n | google.maps.LatLngAltitude\n | google.maps.LatLngAltitudeLiteral,\n ) {\n this._position = position;\n }\n private _position: google.maps.LatLngLiteral | google.maps.LatLng;\n\n /**\n * The DOM Element backing the visual of an AdvancedMarkerElement.\n * Note: AdvancedMarkerElement does not clone the passed-in DOM element. Once the DOM element is passed to an AdvancedMarkerElement, passing the same DOM element to another AdvancedMarkerElement will move the DOM element and cause the previous AdvancedMarkerElement to look empty.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.content\n */\n @Input()\n set content(content: Node | google.maps.marker.PinElement | null) {\n this._content = content;\n }\n private _content: Node | null;\n\n /**\n * If true, the AdvancedMarkerElement can be dragged.\n * Note: AdvancedMarkerElement with altitude is not draggable.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.gmpDraggable\n */\n @Input()\n set gmpDraggable(draggable: boolean) {\n this._draggable = draggable;\n }\n private _draggable: boolean;\n\n /**\n * Options for constructing an AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions\n */\n @Input()\n set options(options: google.maps.marker.AdvancedMarkerElementOptions) {\n this._options = options;\n }\n private _options: google.maps.marker.AdvancedMarkerElementOptions;\n\n /**\n * AdvancedMarkerElements on the map are prioritized by zIndex, with higher values indicating higher display.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.zIndex\n */\n @Input()\n set zIndex(zIndex: number) {\n this._zIndex = zIndex;\n }\n private _zIndex: number;\n\n /**\n * This event is fired when the AdvancedMarkerElement element is clicked.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * This event is fired when the AdvancedMarkerElement is double-clicked.\n */\n @Output() readonly mapDblclick: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('dblclick', 'native');\n\n /**\n * This event is fired when the mouse moves out of the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseout: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('mouseout', 'native');\n\n /**\n * This event is fired when the mouse moves over the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover', 'native');\n\n /**\n * This event is fired when the mouse button is released over the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseup: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('mouseup', 'native');\n\n /**\n * This event is fired when the AdvancedMarkerElement is right-clicked.\n */\n @Output() readonly mapRightclick: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('auxclick', 'native');\n\n /**\n * This event is repeatedly fired while the user drags the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.drag\n */\n @Output() readonly mapDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * This event is fired when the user stops dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragend\n */\n @Output() readonly mapDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * This event is fired when the user starts dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragstart\n */\n @Output() readonly mapDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /** Event emitted when the marker is initialized. */\n @Output() readonly markerInitialized: EventEmitter<google.maps.marker.AdvancedMarkerElement> =\n new EventEmitter<google.maps.marker.AdvancedMarkerElement>();\n\n /**\n * The underlying google.maps.marker.AdvancedMarkerElement object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement\n */\n advancedMarker: google.maps.marker.AdvancedMarkerElement;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n if (google.maps.marker?.AdvancedMarkerElement && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.marker.AdvancedMarkerElement);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MarkerLibrary).AdvancedMarkerElement);\n },\n );\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n advancedMarkerConstructor: typeof google.maps.marker.AdvancedMarkerElement,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.advancedMarker = new advancedMarkerConstructor(this._combineOptions());\n this._assertInitialized();\n this.advancedMarker.map = map;\n this._eventManager.setTarget(this.advancedMarker);\n this.markerInitialized.next(this.advancedMarker);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {advancedMarker, _content, _position, _title, _draggable, _zIndex} = this;\n if (advancedMarker) {\n if (changes['title']) {\n advancedMarker.title = _title;\n }\n\n if (changes['gmpDraggable']) {\n advancedMarker.gmpDraggable = _draggable;\n }\n\n if (changes['content']) {\n advancedMarker.content = _content;\n }\n\n if (changes['position']) {\n advancedMarker.position = _position;\n }\n\n if (changes['zIndex']) {\n advancedMarker.zIndex = _zIndex;\n }\n }\n }\n\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n\n if (this.advancedMarker) {\n this.advancedMarker.map = null;\n }\n }\n\n getAnchor(): google.maps.marker.AdvancedMarkerElement {\n this._assertInitialized();\n return this.advancedMarker;\n }\n\n /** Returns a promise that resolves when the marker has been initialized. */\n _resolveMarker(): Promise<google.maps.marker.AdvancedMarkerElement> {\n return this.advancedMarker\n ? Promise.resolve(this.advancedMarker)\n : this.markerInitialized.pipe(take(1)).toPromise();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.marker.AdvancedMarkerElementOptions {\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n content: this._content || options.content,\n zIndex: this._zIndex ?? options.zIndex,\n gmpDraggable: this._draggable ?? options.gmpDraggable,\n map: this._googleMap.googleMap,\n };\n }\n\n /** Asserts that the map has been initialized. */\n private _assertInitialized(): asserts this is {marker: google.maps.marker.AdvancedMarkerElement} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.advancedMarker) {\n throw Error(\n 'Cannot interact with a Google Map Marker before it has been ' +\n 'initialized. Please wait for the Marker to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport type {\n Cluster,\n MarkerClusterer,\n onClusterClickHandler,\n Renderer,\n Algorithm,\n} from './map-marker-clusterer-types';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MAP_MARKER, Marker, MarkerDirective} from '../marker-utilities';\n\ndeclare const markerClusterer: {\n MarkerClusterer: typeof MarkerClusterer;\n defaultOnClusterClickHandler: onClusterClickHandler;\n};\n\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n *\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n */\n@Component({\n selector: 'map-marker-clusterer',\n exportAs: 'mapMarkerClusterer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content/>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class MapMarkerClusterer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _currentMarkers = new Set<Marker>();\n private readonly _closestMapEventManager = new MapEventManager(this._ngZone);\n private _markersSubscription = Subscription.EMPTY;\n\n /** Whether the clusterer is allowed to be initialized. */\n private readonly _canInitialize = this._googleMap._isBrowser;\n\n /**\n * Used to customize how the marker cluster is rendered.\n * See https://googlemaps.github.io/js-markerclusterer/interfaces/Renderer.html.\n */\n @Input()\n renderer: Renderer;\n\n /**\n * Algorithm used to cluster the markers.\n * See https://googlemaps.github.io/js-markerclusterer/interfaces/Algorithm.html.\n */\n @Input()\n algorithm: Algorithm;\n\n /** Emits when clustering has started. */\n @Output() readonly clusteringbegin: Observable<void> =\n this._closestMapEventManager.getLazyEmitter<void>('clusteringbegin');\n\n /** Emits when clustering is done. */\n @Output() readonly clusteringend: Observable<void> =\n this._closestMapEventManager.getLazyEmitter<void>('clusteringend');\n\n /** Emits when a cluster has been clicked. */\n @Output()\n readonly clusterClick: EventEmitter<Cluster> = new EventEmitter<Cluster>();\n\n /** Event emitted when the marker clusterer is initialized. */\n @Output() readonly markerClustererInitialized: EventEmitter<MarkerClusterer> =\n new EventEmitter<MarkerClusterer>();\n\n @ContentChildren(MAP_MARKER, {descendants: true}) _markers: QueryList<MarkerDirective>;\n\n /** Underlying MarkerClusterer object used to interact with Google Maps. */\n markerClusterer?: MarkerClusterer;\n\n async ngOnInit() {\n if (this._canInitialize) {\n await this._createCluster();\n\n // The `clusteringbegin` and `clusteringend` events are\n // emitted on the map so that's why set it as the target.\n this._closestMapEventManager.setTarget(this._googleMap.googleMap!);\n }\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n const change = changes['renderer'] || changes['algorithm'];\n\n // Since the options are set in the constructor, we have to recreate the cluster if they change.\n if (this.markerClusterer && change && !change.isFirstChange()) {\n await this._createCluster();\n }\n }\n\n ngOnDestroy() {\n this._markersSubscription.unsubscribe();\n this._closestMapEventManager.destroy();\n this._destroyCluster();\n }\n\n private async _createCluster() {\n if (!markerClusterer?.MarkerClusterer && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'MarkerClusterer class not found, cannot construct a marker cluster. ' +\n 'Please install the MarkerClusterer library: ' +\n 'https://github.com/googlemaps/js-markerclusterer',\n );\n }\n\n const map = await this._googleMap._resolveMap();\n this._destroyCluster();\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.markerClusterer = new markerClusterer.MarkerClusterer({\n map,\n renderer: this.renderer,\n algorithm: this.algorithm,\n onClusterClick: (event, cluster, map) => {\n if (this.clusterClick.observers.length) {\n this._ngZone.run(() => this.clusterClick.emit(cluster));\n } else {\n markerClusterer.defaultOnClusterClickHandler(event, cluster, map);\n }\n },\n });\n this.markerClustererInitialized.emit(this.markerClusterer);\n });\n\n await this._watchForMarkerChanges();\n }\n\n private async _watchForMarkerChanges() {\n this._assertInitialized();\n const initialMarkers: Marker[] = [];\n const markers = await this._getInternalMarkers(this._markers.toArray());\n\n for (const marker of markers) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n\n this._markersSubscription.unsubscribe();\n this._markersSubscription = this._markers.changes.subscribe(\n async (markerComponents: MarkerDirective[]) => {\n this._assertInitialized();\n const newMarkers = new Set<Marker>(await this._getInternalMarkers(markerComponents));\n const markersToAdd: Marker[] = [];\n const markersToRemove: Marker[] = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.render();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n },\n );\n }\n\n private _destroyCluster() {\n // TODO(crisbeto): the naming here seems odd, but the `MarkerCluster` method isn't\n // exposed. All this method seems to do at the time of writing is to call into `reset`.\n // See: https://github.com/googlemaps/js-markerclusterer/blob/main/src/markerclusterer.ts#L205\n this.markerClusterer?.onRemove();\n this.markerClusterer = undefined;\n }\n\n private _getInternalMarkers(markers: MarkerDirective[]): Promise<Marker[]> {\n return Promise.all(markers.map(marker => marker._resolveMarker()));\n }\n\n private _assertInitialized(): asserts this is {markerClusterer: MarkerClusterer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n if (!this.markerClusterer) {\n throw Error(\n 'Cannot interact with a MarkerClusterer before it has been initialized. ' +\n 'Please wait for the MarkerClusterer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {GoogleMap} from './google-map/google-map';\nimport {MapBaseLayer} from './map-base-layer';\nimport {MapBicyclingLayer} from './map-bicycling-layer/map-bicycling-layer';\nimport {MapCircle} from './map-circle/map-circle';\nimport {MapDirectionsRenderer} from './map-directions-renderer/map-directions-renderer';\nimport {MapGroundOverlay} from './map-ground-overlay/map-ground-overlay';\nimport {MapInfoWindow} from './map-info-window/map-info-window';\nimport {MapKmlLayer} from './map-kml-layer/map-kml-layer';\nimport {MapMarker} from './map-marker/map-marker';\nimport {DeprecatedMapMarkerClusterer} from './deprecated-map-marker-clusterer/deprecated-map-marker-clusterer';\nimport {MapPolygon} from './map-polygon/map-polygon';\nimport {MapPolyline} from './map-polyline/map-polyline';\nimport {MapRectangle} from './map-rectangle/map-rectangle';\nimport {MapTrafficLayer} from './map-traffic-layer/map-traffic-layer';\nimport {MapTransitLayer} from './map-transit-layer/map-transit-layer';\nimport {MapHeatmapLayer} from './map-heatmap-layer/map-heatmap-layer';\nimport {MapAdvancedMarker} from './map-advanced-marker/map-advanced-marker';\nimport {MapMarkerClusterer} from './map-marker-clusterer/map-marker-clusterer';\n\nconst COMPONENTS = [\n GoogleMap,\n MapBaseLayer,\n MapBicyclingLayer,\n MapCircle,\n MapDirectionsRenderer,\n MapGroundOverlay,\n MapHeatmapLayer,\n MapInfoWindow,\n MapKmlLayer,\n MapMarker,\n MapAdvancedMarker,\n DeprecatedMapMarkerClusterer,\n MapPolygon,\n MapPolyline,\n MapRectangle,\n MapTrafficLayer,\n MapTransitLayer,\n MapMarkerClusterer,\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n})\nexport class GoogleMapsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, NgZone, inject} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport interface MapDirectionsResponse {\n status: google.maps.DirectionsStatus;\n result?: google.maps.DirectionsResult;\n}\n\n/**\n * Angular service that wraps the Google Maps DirectionsService from the Google Maps JavaScript\n * API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService\n */\n@Injectable({providedIn: 'root'})\nexport class MapDirectionsService {\n private readonly _ngZone = inject(NgZone);\n private _directionsService: google.maps.DirectionsService | undefined;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsService.route\n */\n route(request: google.maps.DirectionsRequest): Observable<MapDirectionsResponse> {\n return new Observable(observer => {\n this._getService().then(service => {\n service.route(request, (result, status) => {\n this._ngZone.run(() => {\n observer.next({result: result || undefined, status});\n observer.complete();\n });\n });\n });\n });\n }\n\n private _getService(): Promise<google.maps.DirectionsService> {\n if (!this._directionsService) {\n if (google.maps.DirectionsService) {\n this._directionsService = new google.maps.DirectionsService();\n } else {\n return google.maps.importLibrary('routes').then(lib => {\n this._directionsService = new (lib as google.maps.RoutesLibrary).DirectionsService();\n return this._directionsService;\n });\n }\n }\n\n return Promise.resolve(this._directionsService);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, NgZone, inject} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport interface MapGeocoderResponse {\n status: google.maps.GeocoderStatus;\n results: google.maps.GeocoderResult[];\n}\n\n/**\n * Angular service that wraps the Google Maps Geocoder from the Google Maps JavaScript API.\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder\n */\n@Injectable({providedIn: 'root'})\nexport class MapGeocoder {\n private readonly _ngZone = inject(NgZone);\n private _geocoder: google.maps.Geocoder | undefined;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode\n */\n geocode(request: google.maps.GeocoderRequest): Observable<MapGeocoderResponse> {\n return new Observable(observer => {\n this._getGeocoder().then(geocoder => {\n geocoder.geocode(request, (results, status) => {\n this._ngZone.run(() => {\n observer.next({results: results || [], status});\n observer.complete();\n });\n });\n });\n });\n }\n\n private _getGeocoder(): Promise<google.maps.Geocoder> {\n if (!this._geocoder) {\n if (google.maps.Geocoder) {\n this._geocoder = new google.maps.Geocoder();\n } else {\n return google.maps.importLibrary('geocoding').then(lib => {\n this._geocoder = new (lib as google.maps.GeocodingLibrary).Geocoder();\n return this._geocoder;\n });\n }\n }\n\n return Promise.resolve(this._geocoder);\n }\n}\n"],"names":["MapEventManager","_ngZone","_pending","_listeners","_targetStream","BehaviorSubject","undefined","_clearListeners","listener","remove","constructor","getLazyEmitter","name","type","pipe","switchMap","target","observable","Observable","observer","push","handle","event","run","next","ngDevMode","addEventListener","removeEventListener","Error","addListener","complete","setTarget","currentTarget","value","forEach","subscriber","subscribe","destroy","DEFAULT_OPTIONS","center","lat","lng","zoom","mapTypeId","DEFAULT_HEIGHT","DEFAULT_WIDTH","GoogleMap","_elementRef","inject","ElementRef","NgZone","_eventManager","_mapEl","_existingAuthFailureCallback","googleMap","_isBrowser","height","width","mapId","_center","_zoom","options","_options","mapInitialized","EventEmitter","authFailure","boundsChanged","centerChanged","mapClick","mapDblclick","mapDrag","mapDragend","mapDragstart","headingChanged","idle","maptypeidChanged","mapMousemove","mapMouseout","mapMouseover","projectionChanged","mapRightclick","tilesloaded","tiltChanged","zoomChanged","platformId","PLATFORM_ID","isPlatformBrowser","googleMapsWindow","window","google","gm_authFailure","emit","ngOnChanges","changes","_setSize","setOptions","_combineOptions","setCenter","setZoom","setMapTypeId","ngOnInit","nativeElement","querySelector","maps","Map","_initialize","runOutsideAngular","importLibrary","then","lib","mapConstructor","ngOnDestroy","fitBounds","bounds","padding","_assertInitialized","panBy","x","y","panTo","latLng","panToBounds","latLngBounds","getBounds","getCenter","getClickableIcons","getHeading","getMapTypeId","getProjection","getStreetView","getTilt","getZoom","controls","data","mapTypes","overlayMapTypes","_resolveMap","Promise","resolve","take","toPromise","styles","style","coerceCssPixelValue","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","exportAs","template","Input","Output","cssUnitsPattern","test","MapBaseLayer","_map","_initializeObject","_setMap","_unsetMap","Directive","isStandalone","ngImport","MapBicyclingLayer","_zone","bicyclingLayer","bicyclingLayerInitialized","BicyclingLayer","all","map","layerConstructor","_assertLayerInitialized","setMap","outputs","MapCircle","_radius","_destroyed","Subject","circle","radius","circleClick","circleDblclick","circleDrag","circleDragend","circleDragstart","circleMousedown","circleMousemove","circleMouseout","circleMouseover","circleMouseup","radiusChanged","circleRightclick","circleInitialized","Circle","circleConstructor","_watchForOptionsChanges","_watchForCenterChanges","_watchForRadiusChanges","getDraggable","getEditable","getRadius","getVisible","combineLatest","combinedOptions","takeUntil","setRadius","inputs","MapDirectionsRenderer","_googleMap","directions","_directions","directionsChanged","directionsRendererInitialized","directionsRenderer","DirectionsRenderer","rendererConstructor","setDirections","getDirections","getPanel","getRouteIndex","usesOnChanges","MapGroundOverlay","_opacity","_url","_bounds","_hasWatchers","groundOverlay","url","clickable","opacity","groundOverlayInitialized","GroundOverlay","overlayConstructor","getValue","_watchForOpacityChanges","_watchForUrlChanges","getOpacity","getUrl","setOpacity","overlay","set","MapInfoWindow","_position","_destroy","infoWindow","position","closeclick","contentChanged","domready","positionChanged","zindexChanged","infoWindowInitialized","InfoWindow","infoWindowConstructor","_watchForPositionChanges","close","getContent","getPosition","getZIndex","openAdvancedMarkerElement","advancedMarkerElement","content","open","getAnchor","anchor","shouldFocus","anchorObject","get","display","setContent","setPosition","host","styleAttribute","MapKmlLayer","kmlLayer","kmlClick","defaultviewportChanged","statusChanged","kmlLayerInitialized","KmlLayer","getDefaultViewport","getMetadata","getStatus","setUrl","MAP_MARKER","InjectionToken","DEFAULT_MARKER_OPTIONS","MapMarker","title","_title","label","_label","_clickable","icon","_icon","visible","_visible","animationChanged","clickableChanged","cursorChanged","draggableChanged","flatChanged","iconChanged","mapMousedown","mapMouseup","shapeChanged","titleChanged","visibleChanged","markerInitialized","marker","Marker","markerConstructor","setTitle","setLabel","setClickable","setIcon","setVisible","getAnimation","getClickable","getCursor","getIcon","getLabel","getShape","getTitle","_resolveMarker","ɵdir","ɵɵngDeclareDirective","providers","provide","useExisting","DEFAULT_CLUSTERER_OPTIONS","DeprecatedMapMarkerClusterer","_currentMarkers","Set","_canInitialize","ariaLabelFn","averageCenter","_averageCenter","batchSize","batchSizeIE","_batchSizeIE","calculator","_calculator","clusterClass","_clusterClass","enableRetinaIcons","_enableRetinaIcons","gridSize","_gridSize","ignoreHidden","_ignoreHidden","imageExtension","_imageExtension","imagePath","_imagePath","imageSizes","_imageSizes","maxZoom","_maxZoom","minimumClusterSize","_minimumClusterSize","_styles","zIndex","_zIndex","zoomOnClick","_zoomOnClick","clusteringbegin","clusteringend","clusterClick","_markers","markerClusterer","markerClustererInitialized","MarkerClusterer","ngAfterContentInit","_watchForMarkerChanges","clusterer","setAverageCenter","setBatchSizeIE","setCalculator","setClusterClass","setEnableRetinaIcons","setGridSize","setIgnoreHidden","setImageExtension","setImagePath","setImageSizes","setMaxZoom","setMinimumClusterSize","setStyles","setZIndex","setZoomOnClick","fitMapToMarkers","getAverageCenter","getBatchSizeIE","getCalculator","getClusterClass","getClusters","getEnableRetinaIcons","getGridSize","getIgnoreHidden","getImageExtension","getImagePath","getImageSizes","getMaxZoom","getMinimumClusterSize","getStyles","getTotalClusters","getTotalMarkers","getZoomOnClick","_getInternalMarkers","markers","initialMarkers","add","addMarkers","markerComponents","newMarkers","markersToAdd","markersToRemove","Array","from","has","removeMarkers","repaint","delete","markerComponent","queries","propertyName","predicate","descendants","ContentChildren","MapPolygon","_paths","polygon","paths","polygonClick","polygonDblclick","polygonDrag","polygonDragend","polygonDragstart","polygonMousedown","polygonMousemove","polygonMouseout","polygonMouseover","polygonMouseup","polygonRightclick","polygonInitialized","Polygon","polygonConstructor","_watchForPathChanges","getPath","getPaths","setPaths","MapPolyline","_path","polyline","path","polylineClick","polylineDblclick","polylineDrag","polylineDragend","polylineDragstart","polylineMousedown","polylineMousemove","polylineMouseout","polylineMouseover","polylineMouseup","polylineRightclick","polylineInitialized","Polyline","polylineConstructor","setPath","MapRectangle","rectangle","rectangleClick","rectangleDblclick","rectangleDrag","rectangleDragend","rectangleDragstart","rectangleMousedown","rectangleMousemove","rectangleMouseout","rectangleMouseover","rectangleMouseup","rectangleRightclick","rectangleInitialized","Rectangle","rectangleConstructor","_watchForBoundsChanges","setBounds","MapTrafficLayer","_autoRefresh","trafficLayer","autoRefresh","trafficLayerInitialized","TrafficLayer","_watchForAutoRefreshChanges","MapTransitLayer","transitLayer","transitLayerInitialized","TransitLayer","MapHeatmapLayer","_data","heatmap","heatmapInitialized","visualization","HeatmapLayer","heatmapConstructor","setData","_normalizeData","getData","result","item","isLatLngLiteral","LatLng","MapAdvancedMarker","_content","gmpDraggable","draggable","_draggable","advancedMarker","AdvancedMarkerElement","advancedMarkerConstructor","MapMarkerClusterer","_closestMapEventManager","_markersSubscription","Subscription","EMPTY","renderer","algorithm","_createCluster","change","isFirstChange","unsubscribe","_destroyCluster","onClusterClick","cluster","observers","length","defaultOnClusterClickHandler","toArray","render","onRemove","COMPONENTS","GoogleMapsModule","NgModule","ɵmod","ɵɵngDeclareNgModule","imports","exports","MapDirectionsService","_directionsService","route","request","_getService","service","status","DirectionsService","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn","MapGeocoder","_geocoder","geocode","_getGeocoder","geocoder","results","Geocoder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"google-maps.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-event-manager.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/google-map/google-map.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-base-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-bicycling-layer/map-bicycling-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-circle/map-circle.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-directions-renderer/map-directions-renderer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-ground-overlay/map-ground-overlay.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-info-window/map-info-window.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-kml-layer/map-kml-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/marker-utilities.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-marker/map-marker.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/deprecated-map-marker-clusterer/deprecated-map-marker-clusterer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-polygon/map-polygon.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-polyline/map-polyline.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-rectangle/map-rectangle.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-traffic-layer/map-traffic-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-transit-layer/map-transit-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-heatmap-layer/map-heatmap-layer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-advanced-marker/map-advanced-marker.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-marker-clusterer/map-marker-clusterer.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/google-maps-module.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-directions-renderer/map-directions-service.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/google-maps/map-geocoder/map-geocoder.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgZone} from '@angular/core';\nimport {BehaviorSubject, Observable, Subscriber} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\ninterface ListenerHandle {\n remove(): void;\n}\n\ntype MapEventManagerTarget =\n | {\n addListener<T extends unknown[]>(\n name: string,\n callback: (...args: T) => void,\n ): google.maps.MapsEventListener | undefined;\n\n addEventListener?<T extends unknown[]>(name: string, callback: (...args: T) => void): void;\n removeEventListener?<T extends unknown[]>(name: string, callback: (...args: T) => void): void;\n }\n | undefined;\n\n/** Manages event on a Google Maps object, ensuring that events are added only when necessary. */\nexport class MapEventManager {\n /** Pending listeners that were added before the target was set. */\n private _pending: {observable: Observable<unknown>; observer: Subscriber<unknown>}[] = [];\n private _listeners: ListenerHandle[] = [];\n private _targetStream = new BehaviorSubject<MapEventManagerTarget>(undefined);\n\n /** Clears all currently-registered event listeners. */\n private _clearListeners() {\n for (const listener of this._listeners) {\n listener.remove();\n }\n\n this._listeners = [];\n }\n\n constructor(private _ngZone: NgZone) {}\n\n /**\n * Gets an observable that adds an event listener to the map when a consumer subscribes to it.\n * @param name Name of the event for which the observable is being set up.\n * @param type Type of the event (e.g. one going to a DOM node or a custom Maps one).\n */\n getLazyEmitter<T>(name: string, type?: 'custom' | 'native'): Observable<T> {\n return this._targetStream.pipe(\n switchMap(target => {\n const observable = new Observable<T>(observer => {\n // If the target hasn't been initialized yet, cache the observer so it can be added later.\n if (!target) {\n this._pending.push({observable, observer});\n return undefined;\n }\n\n let handle: ListenerHandle;\n const listener = (event: T) => {\n this._ngZone.run(() => observer.next(event));\n };\n\n if (type === 'native') {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n (!target.addEventListener || !target.removeEventListener)\n ) {\n throw new Error(\n 'Maps event target that uses native events must have `addEventListener` and `removeEventListener` methods.',\n );\n }\n\n target.addEventListener!(name, listener);\n handle = {remove: () => target.removeEventListener!(name, listener)};\n } else {\n handle = target.addListener(name, listener)!;\n }\n\n // If there's an error when initializing the Maps API (e.g. a wrong API key), it will\n // return a dummy object that returns `undefined` from `addListener` (see #26514).\n if (!handle) {\n observer.complete();\n return undefined;\n }\n\n this._listeners.push(handle);\n return () => handle.remove();\n });\n\n return observable;\n }),\n );\n }\n\n /** Sets the current target that the manager should bind events to. */\n setTarget(target: MapEventManagerTarget) {\n const currentTarget = this._targetStream.value;\n\n if (target === currentTarget) {\n return;\n }\n\n // Clear the listeners from the pre-existing target.\n if (currentTarget) {\n this._clearListeners();\n this._pending = [];\n }\n\n this._targetStream.next(target);\n\n // Add the listeners that were bound before the map was initialized.\n this._pending.forEach(subscriber => subscriber.observable.subscribe(subscriber.observer));\n this._pending = [];\n }\n\n /** Destroys the manager and clears the event listeners. */\n destroy() {\n this._clearListeners();\n this._pending = [];\n this._targetStream.complete();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n PLATFORM_ID,\n NgZone,\n SimpleChanges,\n EventEmitter,\n inject,\n} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\nimport {Observable} from 'rxjs';\nimport {MapEventManager} from '../map-event-manager';\nimport {take} from 'rxjs/operators';\n\ninterface GoogleMapsWindow extends Window {\n gm_authFailure?: () => void;\n google?: typeof google;\n}\n\n/** default options set to the Googleplex */\nexport const DEFAULT_OPTIONS: google.maps.MapOptions = {\n center: {lat: 37.421995, lng: -122.084092},\n zoom: 17,\n // Note: the type conversion here isn't necessary for our CI, but it resolves a g3 failure.\n mapTypeId: 'roadmap' as unknown as google.maps.MapTypeId,\n};\n\n/** Arbitrary default height for the map element */\nexport const DEFAULT_HEIGHT = '500px';\n/** Arbitrary default width for the map element */\nexport const DEFAULT_WIDTH = '500px';\n\n/**\n * Angular component that renders a Google Map via the Google Maps JavaScript\n * API.\n * @see https://developers.google.com/maps/documentation/javascript/reference/\n */\n@Component({\n selector: 'google-map',\n exportAs: 'googleMap',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<div class=\"map-container\"></div><ng-content />',\n encapsulation: ViewEncapsulation.None,\n})\nexport class GoogleMap implements OnChanges, OnInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private _mapEl: HTMLElement;\n private _existingAuthFailureCallback: GoogleMapsWindow['gm_authFailure'];\n\n /**\n * The underlying google.maps.Map object\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#Map\n */\n googleMap?: google.maps.Map;\n\n /** Whether we're currently rendering inside a browser. */\n _isBrowser: boolean;\n\n /** Height of the map. Set this to `null` if you'd like to control the height through CSS. */\n @Input() height: string | number | null = DEFAULT_HEIGHT;\n\n /** Width of the map. Set this to `null` if you'd like to control the width through CSS. */\n @Input() width: string | number | null = DEFAULT_WIDTH;\n\n /**\n * The Map ID of the map. This parameter cannot be set or changed after a map is instantiated.\n * See: https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.mapId\n */\n @Input() mapId: string | undefined;\n\n /**\n * Type of map that should be rendered. E.g. hybrid map, terrain map etc.\n * See: https://developers.google.com/maps/documentation/javascript/reference/map#MapTypeId\n */\n @Input() mapTypeId: google.maps.MapTypeId | undefined;\n\n @Input()\n set center(center: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._center = center;\n }\n private _center: google.maps.LatLngLiteral | google.maps.LatLng;\n\n @Input()\n set zoom(zoom: number) {\n this._zoom = zoom;\n }\n private _zoom: number;\n\n @Input()\n set options(options: google.maps.MapOptions) {\n this._options = options || DEFAULT_OPTIONS;\n }\n private _options = DEFAULT_OPTIONS;\n\n /** Event emitted when the map is initialized. */\n @Output() readonly mapInitialized: EventEmitter<google.maps.Map> =\n new EventEmitter<google.maps.Map>();\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/events#auth-errors\n */\n @Output() readonly authFailure: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.bounds_changed\n */\n @Output() readonly boundsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('bounds_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.center_changed\n */\n @Output() readonly centerChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('center_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent | google.maps.IconMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent | google.maps.IconMouseEvent>(\n 'click',\n );\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.drag\n */\n @Output() readonly mapDrag: Observable<void> = this._eventManager.getLazyEmitter<void>('drag');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragend\n */\n @Output() readonly mapDragend: Observable<void> =\n this._eventManager.getLazyEmitter<void>('dragend');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragstart\n */\n @Output() readonly mapDragstart: Observable<void> =\n this._eventManager.getLazyEmitter<void>('dragstart');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.heading_changed\n */\n @Output() readonly headingChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('heading_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.idle\n */\n @Output() readonly idle: Observable<void> = this._eventManager.getLazyEmitter<void>('idle');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.maptypeid_changed\n */\n @Output() readonly maptypeidChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('maptypeid_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mousemove\n */\n @Output()\n readonly mapMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseout\n */\n @Output() readonly mapMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseover\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/map#Map.projection_changed\n */\n @Output() readonly projectionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('projection_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.rightclick\n */\n @Output() readonly mapRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilesloaded\n */\n @Output() readonly tilesloaded: Observable<void> =\n this._eventManager.getLazyEmitter<void>('tilesloaded');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilt_changed\n */\n @Output() readonly tiltChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('tilt_changed');\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.zoom_changed\n */\n @Output() readonly zoomChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zoom_changed');\n\n constructor(...args: unknown[]);\n\n constructor() {\n const platformId = inject<Object>(PLATFORM_ID);\n this._isBrowser = isPlatformBrowser(platformId);\n\n if (this._isBrowser) {\n const googleMapsWindow: GoogleMapsWindow = window;\n if (!googleMapsWindow.google && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'Namespace google not found, cannot construct embedded google ' +\n 'map. Please install the Google Maps JavaScript API: ' +\n 'https://developers.google.com/maps/documentation/javascript/' +\n 'tutorial#Loading_the_Maps_API',\n );\n }\n\n this._existingAuthFailureCallback = googleMapsWindow.gm_authFailure;\n googleMapsWindow.gm_authFailure = () => {\n if (this._existingAuthFailureCallback) {\n this._existingAuthFailureCallback();\n }\n this.authFailure.emit();\n };\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['height'] || changes['width']) {\n this._setSize();\n }\n\n const googleMap = this.googleMap;\n\n if (googleMap) {\n if (changes['options']) {\n googleMap.setOptions(this._combineOptions());\n }\n\n if (changes['center'] && this._center) {\n googleMap.setCenter(this._center);\n }\n\n // Note that the zoom can be zero.\n if (changes['zoom'] && this._zoom != null) {\n googleMap.setZoom(this._zoom);\n }\n\n if (changes['mapTypeId'] && this.mapTypeId) {\n googleMap.setMapTypeId(this.mapTypeId);\n }\n }\n }\n\n ngOnInit() {\n // It should be a noop during server-side rendering.\n if (this._isBrowser) {\n this._mapEl = this._elementRef.nativeElement.querySelector('.map-container')!;\n this._setSize();\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n if (google.maps.Map) {\n this._initialize(google.maps.Map);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps\n .importLibrary('maps')\n .then(lib => this._initialize((lib as google.maps.MapsLibrary).Map));\n });\n }\n }\n }\n\n private _initialize(mapConstructor: typeof google.maps.Map) {\n this._ngZone.runOutsideAngular(() => {\n this.googleMap = new mapConstructor(this._mapEl, this._combineOptions());\n this._eventManager.setTarget(this.googleMap);\n this.mapInitialized.emit(this.googleMap);\n });\n }\n\n ngOnDestroy() {\n this.mapInitialized.complete();\n this._eventManager.destroy();\n\n if (this._isBrowser) {\n const googleMapsWindow: GoogleMapsWindow = window;\n googleMapsWindow.gm_authFailure = this._existingAuthFailureCallback;\n }\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.fitBounds\n */\n fitBounds(\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n padding?: number | google.maps.Padding,\n ) {\n this._assertInitialized();\n this.googleMap.fitBounds(bounds, padding);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panBy\n */\n panBy(x: number, y: number) {\n this._assertInitialized();\n this.googleMap.panBy(x, y);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panTo\n */\n panTo(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\n this._assertInitialized();\n this.googleMap.panTo(latLng);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panToBounds\n */\n panToBounds(\n latLngBounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n padding?: number | google.maps.Padding,\n ) {\n this._assertInitialized();\n this.googleMap.panToBounds(latLngBounds, padding);\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.googleMap.getBounds() || null;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getCenter\n */\n getCenter(): google.maps.LatLng | undefined {\n this._assertInitialized();\n return this.googleMap.getCenter();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getClickableIcons\n */\n getClickableIcons(): boolean | undefined {\n this._assertInitialized();\n return this.googleMap.getClickableIcons();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getHeading\n */\n getHeading(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getHeading();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getMapTypeId\n */\n getMapTypeId(): google.maps.MapTypeId | string | undefined {\n this._assertInitialized();\n return this.googleMap.getMapTypeId();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getProjection\n */\n getProjection(): google.maps.Projection | null {\n this._assertInitialized();\n return this.googleMap.getProjection() || null;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getStreetView\n */\n getStreetView(): google.maps.StreetViewPanorama {\n this._assertInitialized();\n return this.googleMap.getStreetView();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getTilt\n */\n getTilt(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getTilt();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getZoom\n */\n getZoom(): number | undefined {\n this._assertInitialized();\n return this.googleMap.getZoom();\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.controls\n */\n get controls(): google.maps.MVCArray<Node>[] {\n this._assertInitialized();\n return this.googleMap.controls;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.data\n */\n get data(): google.maps.Data {\n this._assertInitialized();\n return this.googleMap.data;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mapTypes\n */\n get mapTypes(): google.maps.MapTypeRegistry {\n this._assertInitialized();\n return this.googleMap.mapTypes;\n }\n\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.overlayMapTypes\n */\n get overlayMapTypes(): google.maps.MVCArray<google.maps.MapType | null> {\n this._assertInitialized();\n return this.googleMap.overlayMapTypes;\n }\n\n /** Returns a promise that resolves when the map has been initialized. */\n _resolveMap(): Promise<google.maps.Map> {\n return this.googleMap\n ? Promise.resolve(this.googleMap)\n : this.mapInitialized.pipe(take(1)).toPromise();\n }\n\n private _setSize() {\n if (this._mapEl) {\n const styles = this._mapEl.style;\n styles.height =\n this.height === null ? '' : coerceCssPixelValue(this.height) || DEFAULT_HEIGHT;\n styles.width = this.width === null ? '' : coerceCssPixelValue(this.width) || DEFAULT_WIDTH;\n }\n }\n\n /** Combines the center and zoom and the other map options into a single object */\n private _combineOptions(): google.maps.MapOptions {\n const options = this._options || {};\n return {\n ...options,\n // It's important that we set **some** kind of `center` and `zoom`, otherwise\n // Google Maps will render a blank rectangle which looks broken.\n center: this._center || options.center || DEFAULT_OPTIONS.center,\n zoom: this._zoom ?? options.zoom ?? DEFAULT_OPTIONS.zoom,\n // Passing in an undefined `mapTypeId` seems to break tile loading\n // so make sure that we have some kind of default (see #22082).\n mapTypeId: this.mapTypeId || options.mapTypeId || DEFAULT_OPTIONS.mapTypeId,\n mapId: this.mapId || options.mapId,\n };\n }\n\n /** Asserts that the map has been initialized. */\n private _assertInitialized(): asserts this is {googleMap: google.maps.Map} {\n if (!this.googleMap && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n }\n}\n\nconst cssUnitsPattern = /([A-Za-z%]+)$/;\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value: any): string {\n if (value == null) {\n return '';\n }\n\n return cssUnitsPattern.test(value) ? value : `${value}px`;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, NgZone, OnDestroy, OnInit, inject} from '@angular/core';\n\nimport {GoogleMap} from './google-map/google-map';\n\n@Directive({\n selector: 'map-base-layer',\n exportAs: 'mapBaseLayer',\n})\nexport class MapBaseLayer implements OnInit, OnDestroy {\n protected readonly _map = inject(GoogleMap);\n protected readonly _ngZone = inject(NgZone);\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n this._initializeObject();\n });\n this._assertInitialized();\n this._setMap();\n }\n }\n\n ngOnDestroy() {\n this._unsetMap();\n }\n\n private _assertInitialized() {\n if (!this._map.googleMap) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n }\n\n protected _initializeObject() {}\n protected _setMap() {}\n protected _unsetMap() {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, EventEmitter, NgZone, OnDestroy, OnInit, Output, inject} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Bicycling Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\n@Directive({\n selector: 'map-bicycling-layer',\n exportAs: 'mapBicyclingLayer',\n})\nexport class MapBicyclingLayer implements OnInit, OnDestroy {\n private _map = inject(GoogleMap);\n private _zone = inject(NgZone);\n\n /**\n * The underlying google.maps.BicyclingLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\n bicyclingLayer?: google.maps.BicyclingLayer;\n\n /** Event emitted when the bicycling layer is initialized. */\n @Output() readonly bicyclingLayerInitialized: EventEmitter<google.maps.BicyclingLayer> =\n new EventEmitter<google.maps.BicyclingLayer>();\n\n ngOnInit(): void {\n if (this._map._isBrowser) {\n if (google.maps.BicyclingLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.BicyclingLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).BicyclingLayer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(map: google.maps.Map, layerConstructor: typeof google.maps.BicyclingLayer) {\n this._zone.runOutsideAngular(() => {\n this.bicyclingLayer = new layerConstructor();\n this.bicyclingLayerInitialized.emit(this.bicyclingLayer);\n this._assertLayerInitialized();\n this.bicyclingLayer.setMap(map);\n });\n }\n\n ngOnDestroy() {\n this.bicyclingLayer?.setMap(null);\n }\n\n private _assertLayerInitialized(): asserts this is {bicyclingLayer: google.maps.BicyclingLayer} {\n if (!this.bicyclingLayer) {\n throw Error(\n 'Cannot interact with a Google Map Bicycling Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Circle via the Google Maps JavaScript API.\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\n@Directive({\n selector: 'map-circle',\n exportAs: 'mapCircle',\n})\nexport class MapCircle implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.CircleOptions>({});\n private readonly _center = new BehaviorSubject<\n google.maps.LatLng | google.maps.LatLngLiteral | undefined\n >(undefined);\n private readonly _radius = new BehaviorSubject<number | undefined>(undefined);\n private readonly _destroyed = new Subject<void>();\n\n /**\n * Underlying google.maps.Circle object.\n *\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\n circle?: google.maps.Circle; // initialized in ngOnInit\n\n @Input()\n set options(options: google.maps.CircleOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set center(center: google.maps.LatLng | google.maps.LatLngLiteral) {\n this._center.next(center);\n }\n\n @Input()\n set radius(radius: number) {\n this._radius.next(radius);\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.center_changed\n */\n @Output() readonly centerChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('center_changed');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.click\n */\n @Output() readonly circleClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dblclick\n */\n @Output() readonly circleDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.drag\n */\n @Output() readonly circleDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragend\n */\n @Output() readonly circleDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragstart\n */\n @Output() readonly circleDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousedown\n */\n @Output() readonly circleMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousemove\n */\n @Output() readonly circleMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseout\n */\n @Output() readonly circleMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseover\n */\n @Output() readonly circleMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseup\n */\n @Output() readonly circleMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.radius_changed\n */\n @Output() readonly radiusChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('radius_changed');\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.rightclick\n */\n @Output() readonly circleRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /** Event emitted when the circle is initialized. */\n @Output() readonly circleInitialized: EventEmitter<google.maps.Circle> =\n new EventEmitter<google.maps.Circle>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._map._isBrowser) {\n return;\n }\n\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Circle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Circle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Circle, options);\n },\n );\n });\n }\n });\n }\n\n private _initialize(\n map: google.maps.Map,\n circleConstructor: typeof google.maps.Circle,\n options: google.maps.CircleOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.circle = new circleConstructor(options);\n this._assertInitialized();\n this.circle.setMap(map);\n this._eventManager.setTarget(this.circle);\n this.circleInitialized.emit(this.circle);\n this._watchForOptionsChanges();\n this._watchForCenterChanges();\n this._watchForRadiusChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.circle?.setMap(null);\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.circle.getBounds();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getCenter\n */\n getCenter(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.circle.getCenter();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.circle.getDraggable();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.circle.getEditable();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getRadius\n */\n getRadius(): number {\n this._assertInitialized();\n return this.circle.getRadius();\n }\n\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.circle.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.CircleOptions> {\n return combineLatest([this._options, this._center, this._radius]).pipe(\n map(([options, center, radius]) => {\n const combinedOptions: google.maps.CircleOptions = {\n ...options,\n center: center || options.center,\n radius: radius !== undefined ? radius : options.radius,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.circle.setOptions(options);\n });\n }\n\n private _watchForCenterChanges() {\n this._center.pipe(takeUntil(this._destroyed)).subscribe(center => {\n if (center) {\n this._assertInitialized();\n this.circle.setCenter(center);\n }\n });\n }\n\n private _watchForRadiusChanges() {\n this._radius.pipe(takeUntil(this._destroyed)).subscribe(radius => {\n if (radius !== undefined) {\n this._assertInitialized();\n this.circle.setRadius(radius);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {circle: google.maps.Circle} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.circle) {\n throw Error(\n 'Cannot interact with a Google Map Circle before it has been ' +\n 'initialized. Please wait for the Circle to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Directions Renderer via the Google Maps\n * JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsRenderer\n */\n@Directive({\n selector: 'map-directions-renderer',\n exportAs: 'mapDirectionsRenderer',\n})\nexport class MapDirectionsRenderer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions.directions\n */\n @Input()\n set directions(directions: google.maps.DirectionsResult) {\n this._directions = directions;\n }\n private _directions: google.maps.DirectionsResult;\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions\n */\n @Input()\n set options(options: google.maps.DirectionsRendererOptions) {\n this._options = options;\n }\n private _options: google.maps.DirectionsRendererOptions;\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.directions_changed\n */\n @Output()\n readonly directionsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('directions_changed');\n\n /** Event emitted when the directions renderer is initialized. */\n @Output() readonly directionsRendererInitialized: EventEmitter<google.maps.DirectionsRenderer> =\n new EventEmitter<google.maps.DirectionsRenderer>();\n\n /** The underlying google.maps.DirectionsRenderer object. */\n directionsRenderer?: google.maps.DirectionsRenderer;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (google.maps.DirectionsRenderer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.DirectionsRenderer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('routes')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.RoutesLibrary).DirectionsRenderer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n rendererConstructor: typeof google.maps.DirectionsRenderer,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.directionsRenderer = new rendererConstructor(this._combineOptions());\n this._assertInitialized();\n this.directionsRenderer.setMap(map);\n this._eventManager.setTarget(this.directionsRenderer);\n this.directionsRendererInitialized.emit(this.directionsRenderer);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.directionsRenderer) {\n if (changes['options']) {\n this.directionsRenderer.setOptions(this._combineOptions());\n }\n\n if (changes['directions'] && this._directions !== undefined) {\n this.directionsRenderer.setDirections(this._directions);\n }\n }\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this.directionsRenderer?.setMap(null);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getDirections\n */\n getDirections(): google.maps.DirectionsResult | null {\n this._assertInitialized();\n return this.directionsRenderer.getDirections();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getPanel\n */\n getPanel(): Node | null {\n this._assertInitialized();\n return this.directionsRenderer.getPanel();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getRouteIndex\n */\n getRouteIndex(): number {\n this._assertInitialized();\n return this.directionsRenderer.getRouteIndex();\n }\n\n private _combineOptions(): google.maps.DirectionsRendererOptions {\n const options = this._options || {};\n return {\n ...options,\n directions: this._directions || options.directions,\n map: this._googleMap.googleMap,\n };\n }\n\n private _assertInitialized(): asserts this is {\n directionsRenderer: google.maps.DirectionsRenderer;\n } {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.directionsRenderer) {\n throw Error(\n 'Cannot interact with a Google Map Directions Renderer before it has been ' +\n 'initialized. Please wait for the Directions Renderer to load before trying ' +\n 'to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Ground Overlay via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\n@Directive({\n selector: 'map-ground-overlay',\n exportAs: 'mapGroundOverlay',\n})\nexport class MapGroundOverlay implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _opacity = new BehaviorSubject<number>(1);\n private readonly _url = new BehaviorSubject<string>('');\n private readonly _bounds = new BehaviorSubject<\n google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral | undefined\n >(undefined);\n private readonly _destroyed = new Subject<void>();\n private _hasWatchers: boolean;\n\n /**\n * The underlying google.maps.GroundOverlay object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\n groundOverlay?: google.maps.GroundOverlay;\n\n /** URL of the image that will be shown in the overlay. */\n @Input()\n set url(url: string) {\n this._url.next(url);\n }\n\n /** Bounds for the overlay. */\n @Input()\n get bounds(): google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral {\n return this._bounds.value!;\n }\n set bounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral) {\n this._bounds.next(bounds);\n }\n\n /** Whether the overlay is clickable */\n @Input() clickable: boolean = false;\n\n /** Opacity of the overlay. */\n @Input()\n set opacity(opacity: number) {\n this._opacity.next(opacity);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /** Event emitted when the ground overlay is initialized. */\n @Output() readonly groundOverlayInitialized: EventEmitter<google.maps.GroundOverlay> =\n new EventEmitter<google.maps.GroundOverlay>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n // The ground overlay setup is slightly different from the other Google Maps objects in that\n // we have to recreate the `GroundOverlay` object whenever the bounds change, because\n // Google Maps doesn't provide an API to update the bounds of an existing overlay.\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (this.groundOverlay) {\n this.groundOverlay.setMap(null);\n this.groundOverlay = undefined;\n }\n\n if (!bounds) {\n return;\n }\n\n if (google.maps.GroundOverlay && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.GroundOverlay, bounds);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).GroundOverlay, bounds);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n overlayConstructor: typeof google.maps.GroundOverlay,\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.groundOverlay = new overlayConstructor(this._url.getValue(), bounds, {\n clickable: this.clickable,\n opacity: this._opacity.value,\n });\n this._assertInitialized();\n this.groundOverlay.setMap(map);\n this._eventManager.setTarget(this.groundOverlay);\n this.groundOverlayInitialized.emit(this.groundOverlay);\n\n // We only need to set up the watchers once.\n if (!this._hasWatchers) {\n this._hasWatchers = true;\n this._watchForOpacityChanges();\n this._watchForUrlChanges();\n }\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.groundOverlay?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.groundOverlay.getBounds();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getOpacity\n */\n getOpacity(): number {\n this._assertInitialized();\n return this.groundOverlay.getOpacity();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getUrl\n */\n getUrl(): string {\n this._assertInitialized();\n return this.groundOverlay.getUrl();\n }\n\n private _watchForOpacityChanges() {\n this._opacity.pipe(takeUntil(this._destroyed)).subscribe(opacity => {\n if (opacity != null) {\n this.groundOverlay?.setOpacity(opacity);\n }\n });\n }\n\n private _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n const overlay = this.groundOverlay;\n\n if (overlay) {\n overlay.set('url', url);\n // Google Maps only redraws the overlay if we re-set the map.\n overlay.setMap(null);\n overlay.setMap(this._map.googleMap!);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {groundOverlay: google.maps.GroundOverlay} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.groundOverlay) {\n throw Error(\n 'Cannot interact with a Google Map GroundOverlay before it has been initialized. ' +\n 'Please wait for the GroundOverlay to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\n\n/**\n * Angular component that renders a Google Maps info window via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window\n */\n@Directive({\n selector: 'map-info-window',\n exportAs: 'mapInfoWindow',\n host: {'style': 'display: none'},\n})\nexport class MapInfoWindow implements OnInit, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.InfoWindowOptions>({});\n private readonly _position = new BehaviorSubject<\n google.maps.LatLngLiteral | google.maps.LatLng | undefined\n >(undefined);\n private readonly _destroy = new Subject<void>();\n\n /**\n * Underlying google.maps.InfoWindow\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow\n */\n infoWindow?: google.maps.InfoWindow;\n\n @Input()\n set options(options: google.maps.InfoWindowOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set position(position: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._position.next(position);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.closeclick\n */\n @Output() readonly closeclick: Observable<void> =\n this._eventManager.getLazyEmitter<void>('closeclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.content_changed\n */\n @Output() readonly contentChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('content_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.domready\n */\n @Output() readonly domready: Observable<void> =\n this._eventManager.getLazyEmitter<void>('domready');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.position_changed\n */\n @Output() readonly positionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('position_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.zindex_changed\n */\n @Output() readonly zindexChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zindex_changed');\n\n /** Event emitted when the info window is initialized. */\n @Output() readonly infoWindowInitialized: EventEmitter<google.maps.InfoWindow> =\n new EventEmitter<google.maps.InfoWindow>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.InfoWindow) {\n this._initialize(google.maps.InfoWindow, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps.importLibrary('maps').then(lib => {\n this._initialize((lib as google.maps.MapsLibrary).InfoWindow, options);\n });\n });\n }\n });\n }\n }\n\n private _initialize(\n infoWindowConstructor: typeof google.maps.InfoWindow,\n options: google.maps.InfoWindowOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.infoWindow = new infoWindowConstructor(options);\n this._eventManager.setTarget(this.infoWindow);\n this.infoWindowInitialized.emit(this.infoWindow);\n this._watchForOptionsChanges();\n this._watchForPositionChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroy.next();\n this._destroy.complete();\n\n // If no info window has been created on the server, we do not try closing it.\n // On the server, an info window cannot be created and this would cause errors.\n if (this.infoWindow) {\n this.close();\n }\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.close\n */\n close() {\n this._assertInitialized();\n this.infoWindow.close();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getContent\n */\n getContent(): string | Node | null {\n this._assertInitialized();\n return this.infoWindow.getContent() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.getPosition\n */\n getPosition(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.infoWindow.getPosition() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getZIndex\n */\n getZIndex(): number {\n this._assertInitialized();\n return this.infoWindow.getZIndex();\n }\n\n /**\n * Opens the MapInfoWindow using the provided AdvancedMarkerElement.\n * @deprecated Use the `open` method instead.\n * @breaking-change 20.0.0\n */\n openAdvancedMarkerElement(\n advancedMarkerElement: google.maps.marker.AdvancedMarkerElement,\n content?: string | Element | Text,\n ): void {\n this.open(\n {\n getAnchor: () => advancedMarkerElement,\n },\n undefined,\n content,\n );\n }\n\n /**\n * Opens the MapInfoWindow using the provided anchor. If the anchor is not set,\n * then the position property of the options input is used instead.\n */\n open(anchor?: MapAnchorPoint, shouldFocus?: boolean, content?: string | Element | Text): void {\n this._assertInitialized();\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && anchor && !anchor.getAnchor) {\n throw new Error(\n 'Specified anchor does not implement the `getAnchor` method. ' +\n 'It cannot be used to open an info window.',\n );\n }\n\n const anchorObject = anchor ? anchor.getAnchor() : undefined;\n\n // Prevent the info window from initializing when trying to reopen on the same anchor.\n // Note that when the window is opened for the first time, the anchor will always be\n // undefined. If that's the case, we have to allow it to open in order to handle the\n // case where the window doesn't have an anchor, but is placed at a particular position.\n if (this.infoWindow.get('anchor') !== anchorObject || !anchorObject) {\n // If no explicit content is provided, it is taken from the DOM node.\n // If it is, we need to hide it so it doesn't take up space on the page.\n this._elementRef.nativeElement.style.display = content ? 'none' : '';\n if (content) {\n this.infoWindow.setContent(content);\n }\n this.infoWindow.open({\n map: this._googleMap.googleMap,\n anchor: anchorObject,\n shouldFocus,\n });\n }\n }\n\n private _combineOptions(): Observable<google.maps.InfoWindowOptions> {\n return combineLatest([this._options, this._position]).pipe(\n map(([options, position]) => {\n const combinedOptions: google.maps.InfoWindowOptions = {\n ...options,\n position: position || options.position,\n content: this._elementRef.nativeElement,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroy)).subscribe(options => {\n this._assertInitialized();\n this.infoWindow.setOptions(options);\n });\n }\n\n private _watchForPositionChanges() {\n this._position.pipe(takeUntil(this._destroy)).subscribe(position => {\n if (position) {\n this._assertInitialized();\n this.infoWindow.setPosition(position);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {infoWindow: google.maps.InfoWindow} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.infoWindow) {\n throw Error(\n 'Cannot interact with a Google Map Info Window before it has been ' +\n 'initialized. Please wait for the Info Window to load before trying to interact with ' +\n 'it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps KML Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\n@Directive({\n selector: 'map-kml-layer',\n exportAs: 'mapKmlLayer',\n})\nexport class MapKmlLayer implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.KmlLayerOptions>({});\n private readonly _url = new BehaviorSubject<string>('');\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.KmlLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\n kmlLayer?: google.maps.KmlLayer;\n\n @Input()\n set options(options: google.maps.KmlLayerOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set url(url: string) {\n this._url.next(url);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.click\n */\n @Output() readonly kmlClick: Observable<google.maps.KmlMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.KmlMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml\n * #KmlLayer.defaultviewport_changed\n */\n @Output() readonly defaultviewportChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('defaultviewport_changed');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.status_changed\n */\n @Output() readonly statusChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('status_changed');\n\n /** Event emitted when the KML layer is initialized. */\n @Output() readonly kmlLayerInitialized: EventEmitter<google.maps.KmlLayer> =\n new EventEmitter<google.maps.KmlLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.KmlLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.KmlLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).KmlLayer, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n layerConstructor: typeof google.maps.KmlLayer,\n options: google.maps.KmlLayerOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.kmlLayer = new layerConstructor(options);\n this._assertInitialized();\n this.kmlLayer.setMap(map);\n this._eventManager.setTarget(this.kmlLayer);\n this.kmlLayerInitialized.emit(this.kmlLayer);\n this._watchForOptionsChanges();\n this._watchForUrlChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.kmlLayer?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getDefaultViewport\n */\n getDefaultViewport(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.kmlLayer.getDefaultViewport();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getMetadata\n */\n getMetadata(): google.maps.KmlLayerMetadata | null {\n this._assertInitialized();\n return this.kmlLayer.getMetadata();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getStatus\n */\n getStatus(): google.maps.KmlLayerStatus {\n this._assertInitialized();\n return this.kmlLayer.getStatus();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getUrl\n */\n getUrl(): string {\n this._assertInitialized();\n return this.kmlLayer.getUrl();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getZIndex\n */\n getZIndex(): number {\n this._assertInitialized();\n return this.kmlLayer.getZIndex();\n }\n\n private _combineOptions(): Observable<google.maps.KmlLayerOptions> {\n return combineLatest([this._options, this._url]).pipe(\n map(([options, url]) => {\n const combinedOptions: google.maps.KmlLayerOptions = {\n ...options,\n url: url || options.url,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n if (this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setOptions(options);\n }\n });\n }\n\n private _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n if (url && this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setUrl(url);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {kmlLayer: google.maps.KmlLayer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.kmlLayer) {\n throw Error(\n 'Cannot interact with a Google Map KmlLayer before it has been ' +\n 'initialized. Please wait for the KmlLayer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/** Marker types from the Google Maps API. */\nexport type Marker = google.maps.Marker | google.maps.marker.AdvancedMarkerElement;\n\n/** Interface that should be implemented by directives that wrap marker APIs. */\nexport interface MarkerDirective {\n _resolveMarker(): Promise<Marker>;\n}\n\n/** Token that marker directives can use to expose themselves to the clusterer. */\nexport const MAP_MARKER = new InjectionToken<MarkerDirective>('MAP_MARKER');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\nimport {MAP_MARKER, MarkerDirective} from '../marker-utilities';\n\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nexport const DEFAULT_MARKER_OPTIONS = {\n position: {lat: 37.421995, lng: -122.084092},\n};\n\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\n@Directive({\n selector: 'map-marker',\n exportAs: 'mapMarker',\n providers: [\n {\n provide: MAP_MARKER,\n useExisting: MapMarker,\n },\n ],\n})\nexport class MapMarker implements OnInit, OnChanges, OnDestroy, MapAnchorPoint, MarkerDirective {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * Title of the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.title\n */\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n /**\n * Position of the marker. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.position\n */\n @Input()\n set position(position: google.maps.LatLngLiteral | google.maps.LatLng) {\n this._position = position;\n }\n private _position: google.maps.LatLngLiteral | google.maps.LatLng;\n\n /**\n * Label for the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.label\n */\n @Input()\n set label(label: string | google.maps.MarkerLabel) {\n this._label = label;\n }\n private _label: string | google.maps.MarkerLabel;\n\n /**\n * Whether the marker is clickable. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.clickable\n */\n @Input()\n set clickable(clickable: boolean) {\n this._clickable = clickable;\n }\n private _clickable: boolean;\n\n /**\n * Options used to configure the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\n */\n @Input()\n set options(options: google.maps.MarkerOptions) {\n this._options = options;\n }\n private _options: google.maps.MarkerOptions;\n\n /**\n * Icon to be used for the marker.\n * See: https://developers.google.com/maps/documentation/javascript/reference/marker#Icon\n */\n @Input()\n set icon(icon: string | google.maps.Icon | google.maps.Symbol) {\n this._icon = icon;\n }\n private _icon: string | google.maps.Icon | google.maps.Symbol;\n\n /**\n * Whether the marker is visible.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.visible\n */\n @Input()\n set visible(value: boolean) {\n this._visible = value;\n }\n private _visible: boolean;\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.animation_changed\n */\n @Output() readonly animationChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('animation_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.clickable_changed\n */\n @Output() readonly clickableChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clickable_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.cursor_changed\n */\n @Output() readonly cursorChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('cursor_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dblclick\n */\n @Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.drag\n */\n @Output() readonly mapDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragend\n */\n @Output() readonly mapDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.draggable_changed\n */\n @Output() readonly draggableChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('draggable_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragstart\n */\n @Output() readonly mapDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.flat_changed\n */\n @Output() readonly flatChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('flat_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.icon_changed\n */\n @Output() readonly iconChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('icon_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mousedown\n */\n @Output() readonly mapMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseout\n */\n @Output() readonly mapMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseover\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseup\n */\n @Output() readonly mapMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.position_changed\n */\n @Output() readonly positionChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('position_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.rightclick\n */\n @Output() readonly mapRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.shape_changed\n */\n @Output() readonly shapeChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('shape_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.title_changed\n */\n @Output() readonly titleChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('title_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.visible_changed\n */\n @Output() readonly visibleChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('visible_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.zindex_changed\n */\n @Output() readonly zindexChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('zindex_changed');\n\n /** Event emitted when the marker is initialized. */\n @Output() readonly markerInitialized: EventEmitter<google.maps.Marker> =\n new EventEmitter<google.maps.Marker>();\n\n /**\n * The underlying google.maps.Marker object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker#Marker\n */\n marker?: google.maps.Marker;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n\n if (google.maps.Marker && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.Marker);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MarkerLibrary).Marker);\n },\n );\n });\n }\n }\n\n private _initialize(map: google.maps.Map, markerConstructor: typeof google.maps.Marker) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.marker = new markerConstructor(this._combineOptions());\n this._assertInitialized();\n this.marker.setMap(map);\n this._eventManager.setTarget(this.marker);\n this.markerInitialized.next(this.marker);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {marker, _title, _position, _label, _clickable, _icon, _visible} = this;\n\n if (marker) {\n if (changes['options']) {\n marker.setOptions(this._combineOptions());\n }\n\n if (changes['title'] && _title !== undefined) {\n marker.setTitle(_title);\n }\n\n if (changes['position'] && _position) {\n marker.setPosition(_position);\n }\n\n if (changes['label'] && _label !== undefined) {\n marker.setLabel(_label);\n }\n\n if (changes['clickable'] && _clickable !== undefined) {\n marker.setClickable(_clickable);\n }\n\n if (changes['icon'] && _icon) {\n marker.setIcon(_icon);\n }\n\n if (changes['visible'] && _visible !== undefined) {\n marker.setVisible(_visible);\n }\n }\n }\n\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n this.marker?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getAnimation\n */\n getAnimation(): google.maps.Animation | null {\n this._assertInitialized();\n return this.marker.getAnimation() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getClickable\n */\n getClickable(): boolean {\n this._assertInitialized();\n return this.marker.getClickable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getCursor\n */\n getCursor(): string | null {\n this._assertInitialized();\n return this.marker.getCursor() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return !!this.marker.getDraggable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getIcon\n */\n getIcon(): string | google.maps.Icon | google.maps.Symbol | null {\n this._assertInitialized();\n return this.marker.getIcon() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getLabel\n */\n getLabel(): google.maps.MarkerLabel | string | null {\n this._assertInitialized();\n return this.marker.getLabel() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getOpacity\n */\n getOpacity(): number | null {\n this._assertInitialized();\n return this.marker.getOpacity() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getPosition\n */\n getPosition(): google.maps.LatLng | null {\n this._assertInitialized();\n return this.marker.getPosition() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getShape\n */\n getShape(): google.maps.MarkerShape | null {\n this._assertInitialized();\n return this.marker.getShape() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getTitle\n */\n getTitle(): string | null {\n this._assertInitialized();\n return this.marker.getTitle() || null;\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.marker.getVisible();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getZIndex\n */\n getZIndex(): number | null {\n this._assertInitialized();\n return this.marker.getZIndex() || null;\n }\n\n /** Gets the anchor point that can be used to attach other Google Maps objects. */\n getAnchor(): google.maps.MVCObject {\n this._assertInitialized();\n return this.marker;\n }\n\n /** Returns a promise that resolves when the marker has been initialized. */\n _resolveMarker(): Promise<google.maps.Marker> {\n return this.marker\n ? Promise.resolve(this.marker)\n : this.markerInitialized.pipe(take(1)).toPromise();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.MarkerOptions {\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n label: this._label || options.label,\n clickable: this._clickable ?? options.clickable,\n map: this._googleMap.googleMap,\n icon: this._icon || options.icon,\n visible: this._visible ?? options.visible,\n };\n }\n\n private _assertInitialized(): asserts this is {marker: google.maps.Marker} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.marker) {\n throw Error(\n 'Cannot interact with a Google Map Marker before it has been ' +\n 'initialized. Please wait for the Marker to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapMarker} from '../map-marker/map-marker';\nimport {\n AriaLabelFn,\n Calculator,\n Cluster,\n ClusterIconStyle,\n MarkerClusterer as MarkerClustererInstance,\n MarkerClustererOptions,\n} from './deprecated-marker-clusterer-types';\n\n/** Default options for a clusterer. */\nconst DEFAULT_CLUSTERER_OPTIONS: MarkerClustererOptions = {};\n\n/**\n * The clusterer has to be defined and referred to as a global variable,\n * otherwise it'll cause issues when minified through Closure.\n */\ndeclare const MarkerClusterer: typeof MarkerClustererInstance;\n\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n *\n * @deprecated This component is using a deprecated clustering implementation. Use the\n * `map-marker-clusterer` component instead.\n * @breaking-change 21.0.0\n *\n */\n@Component({\n selector: 'deprecated-map-marker-clusterer',\n exportAs: 'mapMarkerClusterer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content/>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeprecatedMapMarkerClusterer\n implements OnInit, AfterContentInit, OnChanges, OnDestroy\n{\n private readonly _googleMap = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _currentMarkers = new Set<google.maps.Marker>();\n private readonly _eventManager = new MapEventManager(inject(NgZone));\n private readonly _destroy = new Subject<void>();\n\n /** Whether the clusterer is allowed to be initialized. */\n private readonly _canInitialize = this._googleMap._isBrowser;\n\n @Input()\n ariaLabelFn: AriaLabelFn = () => '';\n\n @Input()\n set averageCenter(averageCenter: boolean) {\n this._averageCenter = averageCenter;\n }\n private _averageCenter: boolean;\n\n @Input() batchSize?: number;\n\n @Input()\n set batchSizeIE(batchSizeIE: number) {\n this._batchSizeIE = batchSizeIE;\n }\n private _batchSizeIE: number;\n\n @Input()\n set calculator(calculator: Calculator) {\n this._calculator = calculator;\n }\n private _calculator: Calculator;\n\n @Input()\n set clusterClass(clusterClass: string) {\n this._clusterClass = clusterClass;\n }\n private _clusterClass: string;\n\n @Input()\n set enableRetinaIcons(enableRetinaIcons: boolean) {\n this._enableRetinaIcons = enableRetinaIcons;\n }\n private _enableRetinaIcons: boolean;\n\n @Input()\n set gridSize(gridSize: number) {\n this._gridSize = gridSize;\n }\n private _gridSize: number;\n\n @Input()\n set ignoreHidden(ignoreHidden: boolean) {\n this._ignoreHidden = ignoreHidden;\n }\n private _ignoreHidden: boolean;\n\n @Input()\n set imageExtension(imageExtension: string) {\n this._imageExtension = imageExtension;\n }\n private _imageExtension: string;\n\n @Input()\n set imagePath(imagePath: string) {\n this._imagePath = imagePath;\n }\n private _imagePath: string;\n\n @Input()\n set imageSizes(imageSizes: number[]) {\n this._imageSizes = imageSizes;\n }\n private _imageSizes: number[];\n\n @Input()\n set maxZoom(maxZoom: number) {\n this._maxZoom = maxZoom;\n }\n private _maxZoom: number;\n\n @Input()\n set minimumClusterSize(minimumClusterSize: number) {\n this._minimumClusterSize = minimumClusterSize;\n }\n private _minimumClusterSize: number;\n\n @Input()\n set styles(styles: ClusterIconStyle[]) {\n this._styles = styles;\n }\n private _styles: ClusterIconStyle[];\n\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n @Input()\n set zIndex(zIndex: number) {\n this._zIndex = zIndex;\n }\n private _zIndex: number;\n\n @Input()\n set zoomOnClick(zoomOnClick: boolean) {\n this._zoomOnClick = zoomOnClick;\n }\n private _zoomOnClick: boolean;\n\n @Input()\n set options(options: MarkerClustererOptions) {\n this._options = options;\n }\n private _options: MarkerClustererOptions;\n\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/\n * _google_markerclustererplus.html#clusteringbegin\n */\n @Output() readonly clusteringbegin: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clusteringbegin');\n\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/_google_markerclustererplus.html#clusteringend\n */\n @Output() readonly clusteringend: Observable<void> =\n this._eventManager.getLazyEmitter<void>('clusteringend');\n\n /** Emits when a cluster has been clicked. */\n @Output()\n readonly clusterClick: Observable<Cluster> = this._eventManager.getLazyEmitter<Cluster>('click');\n\n @ContentChildren(MapMarker, {descendants: true}) _markers: QueryList<MapMarker>;\n\n /**\n * The underlying MarkerClusterer object.\n *\n * See\n * googlemaps.github.io/v3-utility-library/classes/\n * _google_markerclustererplus.markerclusterer.html\n */\n markerClusterer?: MarkerClustererInstance;\n\n /** Event emitted when the clusterer is initialized. */\n @Output() readonly markerClustererInitialized: EventEmitter<MarkerClustererInstance> =\n new EventEmitter<MarkerClustererInstance>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._canInitialize) {\n this._ngZone.runOutsideAngular(() => {\n this._googleMap._resolveMap().then(map => {\n if (\n typeof MarkerClusterer !== 'function' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(\n 'MarkerClusterer class not found, cannot construct a marker cluster. ' +\n 'Please install the MarkerClustererPlus library: ' +\n 'https://github.com/googlemaps/js-markerclustererplus',\n );\n }\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this.markerClusterer = this._ngZone.runOutsideAngular(() => {\n return new MarkerClusterer(map, [], this._combineOptions());\n });\n\n this._assertInitialized();\n this._eventManager.setTarget(this.markerClusterer);\n this.markerClustererInitialized.emit(this.markerClusterer);\n });\n });\n }\n }\n\n ngAfterContentInit() {\n if (this._canInitialize) {\n if (this.markerClusterer) {\n this._watchForMarkerChanges();\n } else {\n this.markerClustererInitialized\n .pipe(take(1), takeUntil(this._destroy))\n .subscribe(() => this._watchForMarkerChanges());\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {\n markerClusterer: clusterer,\n ariaLabelFn,\n _averageCenter,\n _batchSizeIE,\n _calculator,\n _styles,\n _clusterClass,\n _enableRetinaIcons,\n _gridSize,\n _ignoreHidden,\n _imageExtension,\n _imagePath,\n _imageSizes,\n _maxZoom,\n _minimumClusterSize,\n _title,\n _zIndex,\n _zoomOnClick,\n } = this;\n\n if (clusterer) {\n if (changes['options']) {\n clusterer.setOptions(this._combineOptions());\n }\n if (changes['ariaLabelFn']) {\n clusterer.ariaLabelFn = ariaLabelFn;\n }\n if (changes['averageCenter'] && _averageCenter !== undefined) {\n clusterer.setAverageCenter(_averageCenter);\n }\n if (changes['batchSizeIE'] && _batchSizeIE !== undefined) {\n clusterer.setBatchSizeIE(_batchSizeIE);\n }\n if (changes['calculator'] && !!_calculator) {\n clusterer.setCalculator(_calculator);\n }\n if (changes['clusterClass'] && _clusterClass !== undefined) {\n clusterer.setClusterClass(_clusterClass);\n }\n if (changes['enableRetinaIcons'] && _enableRetinaIcons !== undefined) {\n clusterer.setEnableRetinaIcons(_enableRetinaIcons);\n }\n if (changes['gridSize'] && _gridSize !== undefined) {\n clusterer.setGridSize(_gridSize);\n }\n if (changes['ignoreHidden'] && _ignoreHidden !== undefined) {\n clusterer.setIgnoreHidden(_ignoreHidden);\n }\n if (changes['imageExtension'] && _imageExtension !== undefined) {\n clusterer.setImageExtension(_imageExtension);\n }\n if (changes['imagePath'] && _imagePath !== undefined) {\n clusterer.setImagePath(_imagePath);\n }\n if (changes['imageSizes'] && _imageSizes) {\n clusterer.setImageSizes(_imageSizes);\n }\n if (changes['maxZoom'] && _maxZoom !== undefined) {\n clusterer.setMaxZoom(_maxZoom);\n }\n if (changes['minimumClusterSize'] && _minimumClusterSize !== undefined) {\n clusterer.setMinimumClusterSize(_minimumClusterSize);\n }\n if (changes['styles'] && _styles) {\n clusterer.setStyles(_styles);\n }\n if (changes['title'] && _title !== undefined) {\n clusterer.setTitle(_title);\n }\n if (changes['zIndex'] && _zIndex !== undefined) {\n clusterer.setZIndex(_zIndex);\n }\n if (changes['zoomOnClick'] && _zoomOnClick !== undefined) {\n clusterer.setZoomOnClick(_zoomOnClick);\n }\n }\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._eventManager.destroy();\n this.markerClusterer?.setMap(null);\n }\n\n fitMapToMarkers(padding: number | google.maps.Padding) {\n this._assertInitialized();\n this.markerClusterer.fitMapToMarkers(padding);\n }\n\n getAverageCenter(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getAverageCenter();\n }\n\n getBatchSizeIE(): number {\n this._assertInitialized();\n return this.markerClusterer.getBatchSizeIE();\n }\n\n getCalculator(): Calculator {\n this._assertInitialized();\n return this.markerClusterer.getCalculator();\n }\n\n getClusterClass(): string {\n this._assertInitialized();\n return this.markerClusterer.getClusterClass();\n }\n\n getClusters(): Cluster[] {\n this._assertInitialized();\n return this.markerClusterer.getClusters();\n }\n\n getEnableRetinaIcons(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getEnableRetinaIcons();\n }\n\n getGridSize(): number {\n this._assertInitialized();\n return this.markerClusterer.getGridSize();\n }\n\n getIgnoreHidden(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getIgnoreHidden();\n }\n\n getImageExtension(): string {\n this._assertInitialized();\n return this.markerClusterer.getImageExtension();\n }\n\n getImagePath(): string {\n this._assertInitialized();\n return this.markerClusterer.getImagePath();\n }\n\n getImageSizes(): number[] {\n this._assertInitialized();\n return this.markerClusterer.getImageSizes();\n }\n\n getMaxZoom(): number {\n this._assertInitialized();\n return this.markerClusterer.getMaxZoom();\n }\n\n getMinimumClusterSize(): number {\n this._assertInitialized();\n return this.markerClusterer.getMinimumClusterSize();\n }\n\n getStyles(): ClusterIconStyle[] {\n this._assertInitialized();\n return this.markerClusterer.getStyles();\n }\n\n getTitle(): string {\n this._assertInitialized();\n return this.markerClusterer.getTitle();\n }\n\n getTotalClusters(): number {\n this._assertInitialized();\n return this.markerClusterer.getTotalClusters();\n }\n\n getTotalMarkers(): number {\n this._assertInitialized();\n return this.markerClusterer.getTotalMarkers();\n }\n\n getZIndex(): number {\n this._assertInitialized();\n return this.markerClusterer.getZIndex();\n }\n\n getZoomOnClick(): boolean {\n this._assertInitialized();\n return this.markerClusterer.getZoomOnClick();\n }\n\n private _combineOptions(): MarkerClustererOptions {\n const options = this._options || DEFAULT_CLUSTERER_OPTIONS;\n return {\n ...options,\n ariaLabelFn: this.ariaLabelFn ?? options.ariaLabelFn,\n averageCenter: this._averageCenter ?? options.averageCenter,\n batchSize: this.batchSize ?? options.batchSize,\n batchSizeIE: this._batchSizeIE ?? options.batchSizeIE,\n calculator: this._calculator ?? options.calculator,\n clusterClass: this._clusterClass ?? options.clusterClass,\n enableRetinaIcons: this._enableRetinaIcons ?? options.enableRetinaIcons,\n gridSize: this._gridSize ?? options.gridSize,\n ignoreHidden: this._ignoreHidden ?? options.ignoreHidden,\n imageExtension: this._imageExtension ?? options.imageExtension,\n imagePath: this._imagePath ?? options.imagePath,\n imageSizes: this._imageSizes ?? options.imageSizes,\n maxZoom: this._maxZoom ?? options.maxZoom,\n minimumClusterSize: this._minimumClusterSize ?? options.minimumClusterSize,\n styles: this._styles ?? options.styles,\n title: this._title ?? options.title,\n zIndex: this._zIndex ?? options.zIndex,\n zoomOnClick: this._zoomOnClick ?? options.zoomOnClick,\n };\n }\n\n private _watchForMarkerChanges() {\n this._assertInitialized();\n\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(this._markers).then(markers => {\n const initialMarkers: google.maps.Marker[] = [];\n for (const marker of markers) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n });\n });\n\n this._markers.changes\n .pipe(takeUntil(this._destroy))\n .subscribe((markerComponents: MapMarker[]) => {\n this._assertInitialized();\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(markerComponents).then(markers => {\n const newMarkers = new Set(markers);\n const markersToAdd: google.maps.Marker[] = [];\n const markersToRemove: google.maps.Marker[] = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.repaint();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n });\n });\n });\n }\n\n private _getInternalMarkers(\n markers: MapMarker[] | QueryList<MapMarker>,\n ): Promise<google.maps.Marker[]> {\n return Promise.all(markers.map(markerComponent => markerComponent._resolveMarker()));\n }\n\n private _assertInitialized(): asserts this is {markerClusterer: MarkerClustererInstance} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.markerClusterer) {\n throw Error(\n 'Cannot interact with a MarkerClusterer before it has been initialized. ' +\n 'Please wait for the MarkerClusterer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Polygon via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\n@Directive({\n selector: 'map-polygon',\n exportAs: 'mapPolygon',\n})\nexport class MapPolygon implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.PolygonOptions>({});\n private readonly _paths = new BehaviorSubject<\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Polygon object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\n polygon?: google.maps.Polygon;\n\n @Input()\n set options(options: google.maps.PolygonOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set paths(\n paths:\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[],\n ) {\n this._paths.next(paths);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.click\n */\n @Output() readonly polygonClick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('click');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dblclick\n */\n @Output() readonly polygonDblclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('dblclick');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.drag\n */\n @Output() readonly polygonDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragend\n */\n @Output() readonly polygonDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragstart\n */\n @Output() readonly polygonDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousedown\n */\n @Output() readonly polygonMousedown: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousedown');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousemove\n */\n @Output() readonly polygonMousemove: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousemove');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseout\n */\n @Output() readonly polygonMouseout: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseout');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseover\n */\n @Output() readonly polygonMouseover: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseover');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseup\n */\n @Output() readonly polygonMouseup: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseup');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.rightclick\n */\n @Output() readonly polygonRightclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('rightclick');\n\n /** Event emitted when the polygon is initialized. */\n @Output() readonly polygonInitialized: EventEmitter<google.maps.Polygon> =\n new EventEmitter<google.maps.Polygon>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Polygon && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polygon, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Polygon, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n polygonConstructor: typeof google.maps.Polygon,\n options: google.maps.PolygonOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polygon = new polygonConstructor(options);\n this._assertInitialized();\n this.polygon.setMap(map);\n this._eventManager.setTarget(this.polygon);\n this.polygonInitialized.emit(this.polygon);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polygon?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.polygon.getDraggable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.polygon.getEditable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPath\n */\n getPath(): google.maps.MVCArray<google.maps.LatLng> {\n this._assertInitialized();\n return this.polygon.getPath();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPaths\n */\n getPaths(): google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>> {\n this._assertInitialized();\n return this.polygon.getPaths();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.polygon.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.PolygonOptions> {\n return combineLatest([this._options, this._paths]).pipe(\n map(([options, paths]) => {\n const combinedOptions: google.maps.PolygonOptions = {\n ...options,\n paths: paths || options.paths,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polygon.setOptions(options);\n });\n }\n\n private _watchForPathChanges() {\n this._paths.pipe(takeUntil(this._destroyed)).subscribe(paths => {\n if (paths) {\n this._assertInitialized();\n this.polygon.setPaths(paths);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {polygon: google.maps.Polygon} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polygon) {\n throw Error(\n 'Cannot interact with a Google Map Polygon before it has been ' +\n 'initialized. Please wait for the Polygon to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Polyline via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\n@Directive({\n selector: 'map-polyline',\n exportAs: 'mapPolyline',\n})\nexport class MapPolyline implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.PolylineOptions>({});\n private readonly _path = new BehaviorSubject<\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Polyline object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\n polyline?: google.maps.Polyline;\n\n @Input()\n set options(options: google.maps.PolylineOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set path(\n path:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[],\n ) {\n this._path.next(path);\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.click\n */\n @Output() readonly polylineClick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('click');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dblclick\n */\n @Output() readonly polylineDblclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('dblclick');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.drag\n */\n @Output() readonly polylineDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragend\n */\n @Output() readonly polylineDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragstart\n */\n @Output() readonly polylineDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousedown\n */\n @Output() readonly polylineMousedown: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousedown');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousemove\n */\n @Output() readonly polylineMousemove: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mousemove');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseout\n */\n @Output() readonly polylineMouseout: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseout');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseover\n */\n @Output() readonly polylineMouseover: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseover');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseup\n */\n @Output() readonly polylineMouseup: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('mouseup');\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.rightclick\n */\n @Output() readonly polylineRightclick: Observable<google.maps.PolyMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.PolyMouseEvent>('rightclick');\n\n /** Event emitted when the polyline is initialized. */\n @Output() readonly polylineInitialized: EventEmitter<google.maps.Polyline> =\n new EventEmitter<google.maps.Polyline>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Polyline && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polyline, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Polyline, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n polylineConstructor: typeof google.maps.Polyline,\n options: google.maps.PolygonOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polyline = new polylineConstructor(options);\n this._assertInitialized();\n this.polyline.setMap(map);\n this._eventManager.setTarget(this.polyline);\n this.polylineInitialized.emit(this.polyline);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polyline?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.polyline.getDraggable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.polyline.getEditable();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getPath\n */\n getPath(): google.maps.MVCArray<google.maps.LatLng> {\n this._assertInitialized();\n return this.polyline.getPath();\n }\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.polyline.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.PolylineOptions> {\n return combineLatest([this._options, this._path]).pipe(\n map(([options, path]) => {\n const combinedOptions: google.maps.PolylineOptions = {\n ...options,\n path: path || options.path,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polyline.setOptions(options);\n });\n }\n\n private _watchForPathChanges() {\n this._path.pipe(takeUntil(this._destroyed)).subscribe(path => {\n if (path) {\n this._assertInitialized();\n this.polyline.setPath(path);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {polyline: google.maps.Polyline} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polyline) {\n throw Error(\n 'Cannot interact with a Google Map Polyline before it has been ' +\n 'initialized. Please wait for the Polyline to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n inject,\n EventEmitter,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\n\n/**\n * Angular component that renders a Google Maps Rectangle via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\n@Directive({\n selector: 'map-rectangle',\n exportAs: 'mapRectangle',\n})\nexport class MapRectangle implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n private readonly _options = new BehaviorSubject<google.maps.RectangleOptions>({});\n private readonly _bounds = new BehaviorSubject<\n google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral | undefined\n >(undefined);\n\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.Rectangle object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\n rectangle?: google.maps.Rectangle;\n\n @Input()\n set options(options: google.maps.RectangleOptions) {\n this._options.next(options || {});\n }\n\n @Input()\n set bounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral) {\n this._bounds.next(bounds);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.boundsChanged\n */ @Output() readonly boundsChanged: Observable<void> =\n this._eventManager.getLazyEmitter<void>('bounds_changed');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.click\n */\n @Output() readonly rectangleClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dblclick\n */\n @Output() readonly rectangleDblclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.drag\n */\n @Output() readonly rectangleDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragend\n */\n @Output() readonly rectangleDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragstart\n */\n @Output() readonly rectangleDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousedown\n */\n @Output() readonly rectangleMousedown: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousedown');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousemove\n */\n @Output() readonly rectangleMousemove: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mousemove');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseout\n */\n @Output() readonly rectangleMouseout: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseout');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseover\n */\n @Output() readonly rectangleMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseup\n */\n @Output() readonly rectangleMouseup: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseup');\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.rightclick\n */\n @Output() readonly rectangleRightclick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');\n\n /** Event emitted when the rectangle is initialized. */\n @Output() readonly rectangleInitialized: EventEmitter<google.maps.Rectangle> =\n new EventEmitter<google.maps.Rectangle>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.Rectangle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Rectangle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).Rectangle, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n rectangleConstructor: typeof google.maps.Rectangle,\n options: google.maps.RectangleOptions,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.rectangle = new rectangleConstructor(options);\n this._assertInitialized();\n this.rectangle.setMap(map);\n this._eventManager.setTarget(this.rectangle);\n this.rectangleInitialized.emit(this.rectangle);\n this._watchForOptionsChanges();\n this._watchForBoundsChanges();\n });\n }\n\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.rectangle?.setMap(null);\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getBounds\n */\n getBounds(): google.maps.LatLngBounds | null {\n this._assertInitialized();\n return this.rectangle.getBounds();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getDraggable\n */\n getDraggable(): boolean {\n this._assertInitialized();\n return this.rectangle.getDraggable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getEditable\n */\n getEditable(): boolean {\n this._assertInitialized();\n return this.rectangle.getEditable();\n }\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getVisible\n */\n getVisible(): boolean {\n this._assertInitialized();\n return this.rectangle.getVisible();\n }\n\n private _combineOptions(): Observable<google.maps.RectangleOptions> {\n return combineLatest([this._options, this._bounds]).pipe(\n map(([options, bounds]) => {\n const combinedOptions: google.maps.RectangleOptions = {\n ...options,\n bounds: bounds || options.bounds,\n };\n return combinedOptions;\n }),\n );\n }\n\n private _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.rectangle.setOptions(options);\n });\n }\n\n private _watchForBoundsChanges() {\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (bounds) {\n this._assertInitialized();\n this.rectangle.setBounds(bounds);\n }\n });\n }\n\n private _assertInitialized(): asserts this is {rectangle: google.maps.Rectangle} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.rectangle) {\n throw Error(\n 'Cannot interact with a Google Map Rectangle before it has been initialized. ' +\n 'Please wait for the Rectangle to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map, take, takeUntil} from 'rxjs/operators';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Traffic Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\n@Directive({\n selector: 'map-traffic-layer',\n exportAs: 'mapTrafficLayer',\n})\nexport class MapTrafficLayer implements OnInit, OnDestroy {\n private readonly _map = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _autoRefresh = new BehaviorSubject<boolean>(true);\n private readonly _destroyed = new Subject<void>();\n\n /**\n * The underlying google.maps.TrafficLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\n trafficLayer?: google.maps.TrafficLayer;\n\n /**\n * Whether the traffic layer refreshes with updated information automatically.\n */\n @Input()\n set autoRefresh(autoRefresh: boolean) {\n this._autoRefresh.next(autoRefresh);\n }\n\n /** Event emitted when the traffic layer is initialized. */\n @Output() readonly trafficLayerInitialized: EventEmitter<google.maps.TrafficLayer> =\n new EventEmitter<google.maps.TrafficLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions()\n .pipe(take(1))\n .subscribe(options => {\n if (google.maps.TrafficLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TrafficLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).TrafficLayer, options);\n },\n );\n });\n }\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n layerConstructor: typeof google.maps.TrafficLayer,\n options: google.maps.TrafficLayerOptions,\n ) {\n this._ngZone.runOutsideAngular(() => {\n this.trafficLayer = new layerConstructor(options);\n this._assertInitialized();\n this.trafficLayer.setMap(map);\n this.trafficLayerInitialized.emit(this.trafficLayer);\n this._watchForAutoRefreshChanges();\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this.trafficLayer?.setMap(null);\n }\n\n private _combineOptions(): Observable<google.maps.TrafficLayerOptions> {\n return this._autoRefresh.pipe(\n map(autoRefresh => {\n const combinedOptions: google.maps.TrafficLayerOptions = {autoRefresh};\n return combinedOptions;\n }),\n );\n }\n\n private _watchForAutoRefreshChanges() {\n this._combineOptions()\n .pipe(takeUntil(this._destroyed))\n .subscribe(options => {\n this._assertInitialized();\n this.trafficLayer.setOptions(options);\n });\n }\n\n private _assertInitialized(): asserts this is {trafficLayer: google.maps.TrafficLayer} {\n if (!this.trafficLayer) {\n throw Error(\n 'Cannot interact with a Google Map Traffic Layer before it has been initialized. ' +\n 'Please wait for the Traffic Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, EventEmitter, NgZone, OnDestroy, OnInit, Output, inject} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/**\n * Angular component that renders a Google Maps Transit Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\n@Directive({\n selector: 'map-transit-layer',\n exportAs: 'mapTransitLayer',\n})\nexport class MapTransitLayer implements OnInit, OnDestroy {\n private _map = inject(GoogleMap);\n private _zone = inject(NgZone);\n\n /**\n * The underlying google.maps.TransitLayer object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\n transitLayer?: google.maps.TransitLayer;\n\n /** Event emitted when the transit layer is initialized. */\n @Output() readonly transitLayerInitialized: EventEmitter<google.maps.TransitLayer> =\n new EventEmitter<google.maps.TransitLayer>();\n\n ngOnInit(): void {\n if (this._map._isBrowser) {\n if (google.maps.TransitLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TransitLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MapsLibrary).TransitLayer);\n },\n );\n });\n }\n }\n }\n\n private _initialize(map: google.maps.Map, layerConstructor: typeof google.maps.TransitLayer) {\n this._zone.runOutsideAngular(() => {\n this.transitLayer = new layerConstructor();\n this.transitLayerInitialized.emit(this.transitLayer);\n this._assertLayerInitialized();\n this.transitLayer.setMap(map);\n });\n }\n\n ngOnDestroy() {\n this.transitLayer?.setMap(null);\n }\n\n private _assertLayerInitialized(): asserts this is {transitLayer: google.maps.TransitLayer} {\n if (!this.transitLayer) {\n throw Error(\n 'Cannot interact with a Google Map Transit Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.',\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n Output,\n EventEmitter,\n inject,\n} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\n\n/** Possible data that can be shown on a heatmap layer. */\nexport type HeatmapData =\n | google.maps.MVCArray<\n google.maps.LatLng | google.maps.visualization.WeightedLocation | google.maps.LatLngLiteral\n >\n | (google.maps.LatLng | google.maps.visualization.WeightedLocation | google.maps.LatLngLiteral)[];\n\n/**\n * Angular directive that renders a Google Maps heatmap via the Google Maps JavaScript API.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n@Directive({\n selector: 'map-heatmap-layer',\n exportAs: 'mapHeatmapLayer',\n})\nexport class MapHeatmapLayer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n\n /**\n * Data shown on the heatmap.\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n @Input()\n set data(data: HeatmapData) {\n this._data = data;\n }\n private _data: HeatmapData;\n\n /**\n * Options used to configure the heatmap. See:\n * developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n @Input()\n set options(options: Partial<google.maps.visualization.HeatmapLayerOptions>) {\n this._options = options;\n }\n private _options: Partial<google.maps.visualization.HeatmapLayerOptions>;\n\n /**\n * The underlying google.maps.visualization.HeatmapLayer object.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n heatmap?: google.maps.visualization.HeatmapLayer;\n\n /** Event emitted when the heatmap is initialized. */\n @Output() readonly heatmapInitialized: EventEmitter<google.maps.visualization.HeatmapLayer> =\n new EventEmitter<google.maps.visualization.HeatmapLayer>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (\n !window.google?.maps?.visualization &&\n !window.google?.maps.importLibrary &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(\n 'Namespace `google.maps.visualization` not found, cannot construct heatmap. ' +\n 'Please install the Google Maps JavaScript API with the \"visualization\" library: ' +\n 'https://developers.google.com/maps/documentation/javascript/visualization',\n );\n }\n\n if (google.maps.visualization?.HeatmapLayer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.visualization.HeatmapLayer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([\n this._googleMap._resolveMap(),\n google.maps.importLibrary('visualization'),\n ]).then(([map, lib]) => {\n this._initialize(map, (lib as google.maps.VisualizationLibrary).HeatmapLayer);\n });\n });\n }\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n heatmapConstructor: typeof google.maps.visualization.HeatmapLayer,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.heatmap = new heatmapConstructor(this._combineOptions());\n this._assertInitialized();\n this.heatmap.setMap(map);\n this.heatmapInitialized.emit(this.heatmap);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {_data, heatmap} = this;\n\n if (heatmap) {\n if (changes['options']) {\n heatmap.setOptions(this._combineOptions());\n }\n\n if (changes['data'] && _data !== undefined) {\n heatmap.setData(this._normalizeData(_data));\n }\n }\n }\n\n ngOnDestroy() {\n this.heatmap?.setMap(null);\n }\n\n /**\n * Gets the data that is currently shown on the heatmap.\n * See: developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayer\n */\n getData(): HeatmapData {\n this._assertInitialized();\n return this.heatmap.getData();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.visualization.HeatmapLayerOptions {\n const options = this._options || {};\n return {\n ...options,\n data: this._normalizeData(this._data || options.data || []),\n map: this._googleMap.googleMap,\n };\n }\n\n /**\n * Most Google Maps APIs support both `LatLng` objects and `LatLngLiteral`. The latter is more\n * convenient to write out, because the Google Maps API doesn't have to have been loaded in order\n * to construct them. The `HeatmapLayer` appears to be an exception that only allows a `LatLng`\n * object, or it throws a runtime error. Since it's more convenient and we expect that Angular\n * users will load the API asynchronously, we allow them to pass in a `LatLngLiteral` and we\n * convert it to a `LatLng` object before passing it off to Google Maps.\n */\n private _normalizeData(data: HeatmapData) {\n const result: (google.maps.LatLng | google.maps.visualization.WeightedLocation)[] = [];\n\n data.forEach(item => {\n result.push(isLatLngLiteral(item) ? new google.maps.LatLng(item.lat, item.lng) : item);\n });\n\n return result;\n }\n\n /** Asserts that the heatmap object has been initialized. */\n private _assertInitialized(): asserts this is {heatmap: google.maps.visualization.HeatmapLayer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.heatmap) {\n throw Error(\n 'Cannot interact with a Google Map HeatmapLayer before it has been ' +\n 'initialized. Please wait for the heatmap to load before trying to interact with it.',\n );\n }\n }\n }\n}\n\n/** Asserts that an object is a `LatLngLiteral`. */\nfunction isLatLngLiteral(value: any): value is google.maps.LatLngLiteral {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Input,\n OnDestroy,\n OnInit,\n Output,\n NgZone,\n Directive,\n OnChanges,\n SimpleChanges,\n inject,\n EventEmitter,\n} from '@angular/core';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MapAnchorPoint} from '../map-anchor-point';\nimport {MAP_MARKER, MarkerDirective} from '../marker-utilities';\nimport {Observable} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nexport const DEFAULT_MARKER_OPTIONS = {\n position: {lat: 37.221995, lng: -122.184092},\n};\n\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\n@Directive({\n selector: 'map-advanced-marker',\n exportAs: 'mapAdvancedMarker',\n providers: [\n {\n provide: MAP_MARKER,\n useExisting: MapAdvancedMarker,\n },\n ],\n})\nexport class MapAdvancedMarker\n implements OnInit, OnChanges, OnDestroy, MapAnchorPoint, MarkerDirective\n{\n private readonly _googleMap = inject(GoogleMap);\n private _ngZone = inject(NgZone);\n private _eventManager = new MapEventManager(inject(NgZone));\n\n /**\n * Rollover text. If provided, an accessibility text (e.g. for use with screen readers) will be added to the AdvancedMarkerElement with the provided value.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.title\n */\n @Input()\n set title(title: string) {\n this._title = title;\n }\n private _title: string;\n\n /**\n * Sets the AdvancedMarkerElement's position. An AdvancedMarkerElement may be constructed without a position, but will not be displayed until its position is provided - for example, by a user's actions or choices. An AdvancedMarkerElement's position can be provided by setting AdvancedMarkerElement.position if not provided at the construction.\n * Note: AdvancedMarkerElement with altitude is only supported on vector maps.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.position\n */\n @Input()\n set position(\n position:\n | google.maps.LatLngLiteral\n | google.maps.LatLng\n | google.maps.LatLngAltitude\n | google.maps.LatLngAltitudeLiteral,\n ) {\n this._position = position;\n }\n private _position: google.maps.LatLngLiteral | google.maps.LatLng;\n\n /**\n * The DOM Element backing the visual of an AdvancedMarkerElement.\n * Note: AdvancedMarkerElement does not clone the passed-in DOM element. Once the DOM element is passed to an AdvancedMarkerElement, passing the same DOM element to another AdvancedMarkerElement will move the DOM element and cause the previous AdvancedMarkerElement to look empty.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.content\n */\n @Input()\n set content(content: Node | google.maps.marker.PinElement | null) {\n this._content = content;\n }\n private _content: Node | null;\n\n /**\n * If true, the AdvancedMarkerElement can be dragged.\n * Note: AdvancedMarkerElement with altitude is not draggable.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.gmpDraggable\n */\n @Input()\n set gmpDraggable(draggable: boolean) {\n this._draggable = draggable;\n }\n private _draggable: boolean;\n\n /**\n * Options for constructing an AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions\n */\n @Input()\n set options(options: google.maps.marker.AdvancedMarkerElementOptions) {\n this._options = options;\n }\n private _options: google.maps.marker.AdvancedMarkerElementOptions;\n\n /**\n * AdvancedMarkerElements on the map are prioritized by zIndex, with higher values indicating higher display.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.zIndex\n */\n @Input()\n set zIndex(zIndex: number) {\n this._zIndex = zIndex;\n }\n private _zIndex: number;\n\n /**\n * This event is fired when the AdvancedMarkerElement element is clicked.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.click\n */\n @Output() readonly mapClick: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('click');\n\n /**\n * This event is fired when the AdvancedMarkerElement is double-clicked.\n */\n @Output() readonly mapDblclick: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('dblclick', 'native');\n\n /**\n * This event is fired when the mouse moves out of the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseout: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('mouseout', 'native');\n\n /**\n * This event is fired when the mouse moves over the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseover: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('mouseover', 'native');\n\n /**\n * This event is fired when the mouse button is released over the AdvancedMarkerElement.\n */\n @Output() readonly mapMouseup: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('mouseup', 'native');\n\n /**\n * This event is fired when the AdvancedMarkerElement is right-clicked.\n */\n @Output() readonly mapRightclick: Observable<MouseEvent> =\n this._eventManager.getLazyEmitter<MouseEvent>('auxclick', 'native');\n\n /**\n * This event is repeatedly fired while the user drags the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.drag\n */\n @Output() readonly mapDrag: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('drag');\n\n /**\n * This event is fired when the user stops dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragend\n */\n @Output() readonly mapDragend: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragend');\n\n /**\n * This event is fired when the user starts dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragstart\n */\n @Output() readonly mapDragstart: Observable<google.maps.MapMouseEvent> =\n this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dragstart');\n\n /** Event emitted when the marker is initialized. */\n @Output() readonly markerInitialized: EventEmitter<google.maps.marker.AdvancedMarkerElement> =\n new EventEmitter<google.maps.marker.AdvancedMarkerElement>();\n\n /**\n * The underlying google.maps.marker.AdvancedMarkerElement object.\n *\n * See developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement\n */\n advancedMarker: google.maps.marker.AdvancedMarkerElement;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n if (google.maps.marker?.AdvancedMarkerElement && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.marker.AdvancedMarkerElement);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(\n ([map, lib]) => {\n this._initialize(map, (lib as google.maps.MarkerLibrary).AdvancedMarkerElement);\n },\n );\n });\n }\n }\n\n private _initialize(\n map: google.maps.Map,\n advancedMarkerConstructor: typeof google.maps.marker.AdvancedMarkerElement,\n ) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.advancedMarker = new advancedMarkerConstructor(this._combineOptions());\n this._assertInitialized();\n this.advancedMarker.map = map;\n this._eventManager.setTarget(this.advancedMarker);\n this.markerInitialized.next(this.advancedMarker);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const {advancedMarker, _content, _position, _title, _draggable, _zIndex} = this;\n if (advancedMarker) {\n if (changes['title']) {\n advancedMarker.title = _title;\n }\n\n if (changes['gmpDraggable']) {\n advancedMarker.gmpDraggable = _draggable;\n }\n\n if (changes['content']) {\n advancedMarker.content = _content;\n }\n\n if (changes['position']) {\n advancedMarker.position = _position;\n }\n\n if (changes['zIndex']) {\n advancedMarker.zIndex = _zIndex;\n }\n }\n }\n\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n\n if (this.advancedMarker) {\n this.advancedMarker.map = null;\n }\n }\n\n getAnchor(): google.maps.marker.AdvancedMarkerElement {\n this._assertInitialized();\n return this.advancedMarker;\n }\n\n /** Returns a promise that resolves when the marker has been initialized. */\n _resolveMarker(): Promise<google.maps.marker.AdvancedMarkerElement> {\n return this.advancedMarker\n ? Promise.resolve(this.advancedMarker)\n : this.markerInitialized.pipe(take(1)).toPromise();\n }\n\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n private _combineOptions(): google.maps.marker.AdvancedMarkerElementOptions {\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n content: this._content || options.content,\n zIndex: this._zIndex ?? options.zIndex,\n gmpDraggable: this._draggable ?? options.gmpDraggable,\n map: this._googleMap.googleMap,\n };\n }\n\n /** Asserts that the map has been initialized. */\n private _assertInitialized(): asserts this is {marker: google.maps.marker.AdvancedMarkerElement} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.advancedMarker) {\n throw Error(\n 'Cannot interact with a Google Map Marker before it has been ' +\n 'initialized. Please wait for the Marker to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport type {\n Cluster,\n MarkerClusterer,\n onClusterClickHandler,\n Renderer,\n Algorithm,\n} from './map-marker-clusterer-types';\n\nimport {GoogleMap} from '../google-map/google-map';\nimport {MapEventManager} from '../map-event-manager';\nimport {MAP_MARKER, Marker, MarkerDirective} from '../marker-utilities';\n\ndeclare const markerClusterer: {\n MarkerClusterer: typeof MarkerClusterer;\n defaultOnClusterClickHandler: onClusterClickHandler;\n};\n\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n *\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n */\n@Component({\n selector: 'map-marker-clusterer',\n exportAs: 'mapMarkerClusterer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content/>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class MapMarkerClusterer implements OnInit, OnChanges, OnDestroy {\n private readonly _googleMap = inject(GoogleMap);\n private readonly _ngZone = inject(NgZone);\n private readonly _currentMarkers = new Set<Marker>();\n private readonly _closestMapEventManager = new MapEventManager(this._ngZone);\n private _markersSubscription = Subscription.EMPTY;\n\n /** Whether the clusterer is allowed to be initialized. */\n private readonly _canInitialize = this._googleMap._isBrowser;\n\n /**\n * Used to customize how the marker cluster is rendered.\n * See https://googlemaps.github.io/js-markerclusterer/interfaces/Renderer.html.\n */\n @Input()\n renderer: Renderer;\n\n /**\n * Algorithm used to cluster the markers.\n * See https://googlemaps.github.io/js-markerclusterer/interfaces/Algorithm.html.\n */\n @Input()\n algorithm: Algorithm;\n\n /** Emits when clustering has started. */\n @Output() readonly clusteringbegin: Observable<void> =\n this._closestMapEventManager.getLazyEmitter<void>('clusteringbegin');\n\n /** Emits when clustering is done. */\n @Output() readonly clusteringend: Observable<void> =\n this._closestMapEventManager.getLazyEmitter<void>('clusteringend');\n\n /** Emits when a cluster has been clicked. */\n @Output()\n readonly clusterClick: EventEmitter<Cluster> = new EventEmitter<Cluster>();\n\n /** Event emitted when the marker clusterer is initialized. */\n @Output() readonly markerClustererInitialized: EventEmitter<MarkerClusterer> =\n new EventEmitter<MarkerClusterer>();\n\n @ContentChildren(MAP_MARKER, {descendants: true}) _markers: QueryList<MarkerDirective>;\n\n /** Underlying MarkerClusterer object used to interact with Google Maps. */\n markerClusterer?: MarkerClusterer;\n\n async ngOnInit() {\n if (this._canInitialize) {\n await this._createCluster();\n\n // The `clusteringbegin` and `clusteringend` events are\n // emitted on the map so that's why set it as the target.\n this._closestMapEventManager.setTarget(this._googleMap.googleMap!);\n }\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n const change = changes['renderer'] || changes['algorithm'];\n\n // Since the options are set in the constructor, we have to recreate the cluster if they change.\n if (this.markerClusterer && change && !change.isFirstChange()) {\n await this._createCluster();\n }\n }\n\n ngOnDestroy() {\n this._markersSubscription.unsubscribe();\n this._closestMapEventManager.destroy();\n this._destroyCluster();\n }\n\n private async _createCluster() {\n if (!markerClusterer?.MarkerClusterer && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n 'MarkerClusterer class not found, cannot construct a marker cluster. ' +\n 'Please install the MarkerClusterer library: ' +\n 'https://github.com/googlemaps/js-markerclusterer',\n );\n }\n\n const map = await this._googleMap._resolveMap();\n this._destroyCluster();\n\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.markerClusterer = new markerClusterer.MarkerClusterer({\n map,\n renderer: this.renderer,\n algorithm: this.algorithm,\n onClusterClick: (event, cluster, map) => {\n if (this.clusterClick.observers.length) {\n this._ngZone.run(() => this.clusterClick.emit(cluster));\n } else {\n markerClusterer.defaultOnClusterClickHandler(event, cluster, map);\n }\n },\n });\n this.markerClustererInitialized.emit(this.markerClusterer);\n });\n\n await this._watchForMarkerChanges();\n }\n\n private async _watchForMarkerChanges() {\n this._assertInitialized();\n const initialMarkers: Marker[] = [];\n const markers = await this._getInternalMarkers(this._markers.toArray());\n\n for (const marker of markers) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n\n this._markersSubscription.unsubscribe();\n this._markersSubscription = this._markers.changes.subscribe(\n async (markerComponents: MarkerDirective[]) => {\n this._assertInitialized();\n const newMarkers = new Set<Marker>(await this._getInternalMarkers(markerComponents));\n const markersToAdd: Marker[] = [];\n const markersToRemove: Marker[] = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.render();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n },\n );\n }\n\n private _destroyCluster() {\n // TODO(crisbeto): the naming here seems odd, but the `MarkerCluster` method isn't\n // exposed. All this method seems to do at the time of writing is to call into `reset`.\n // See: https://github.com/googlemaps/js-markerclusterer/blob/main/src/markerclusterer.ts#L205\n this.markerClusterer?.onRemove();\n this.markerClusterer = undefined;\n }\n\n private _getInternalMarkers(markers: MarkerDirective[]): Promise<Marker[]> {\n return Promise.all(markers.map(marker => marker._resolveMarker()));\n }\n\n private _assertInitialized(): asserts this is {markerClusterer: MarkerClusterer} {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error(\n 'Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.',\n );\n }\n if (!this.markerClusterer) {\n throw Error(\n 'Cannot interact with a MarkerClusterer before it has been initialized. ' +\n 'Please wait for the MarkerClusterer to load before trying to interact with it.',\n );\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {GoogleMap} from './google-map/google-map';\nimport {MapBaseLayer} from './map-base-layer';\nimport {MapBicyclingLayer} from './map-bicycling-layer/map-bicycling-layer';\nimport {MapCircle} from './map-circle/map-circle';\nimport {MapDirectionsRenderer} from './map-directions-renderer/map-directions-renderer';\nimport {MapGroundOverlay} from './map-ground-overlay/map-ground-overlay';\nimport {MapInfoWindow} from './map-info-window/map-info-window';\nimport {MapKmlLayer} from './map-kml-layer/map-kml-layer';\nimport {MapMarker} from './map-marker/map-marker';\nimport {DeprecatedMapMarkerClusterer} from './deprecated-map-marker-clusterer/deprecated-map-marker-clusterer';\nimport {MapPolygon} from './map-polygon/map-polygon';\nimport {MapPolyline} from './map-polyline/map-polyline';\nimport {MapRectangle} from './map-rectangle/map-rectangle';\nimport {MapTrafficLayer} from './map-traffic-layer/map-traffic-layer';\nimport {MapTransitLayer} from './map-transit-layer/map-transit-layer';\nimport {MapHeatmapLayer} from './map-heatmap-layer/map-heatmap-layer';\nimport {MapAdvancedMarker} from './map-advanced-marker/map-advanced-marker';\nimport {MapMarkerClusterer} from './map-marker-clusterer/map-marker-clusterer';\n\nconst COMPONENTS = [\n GoogleMap,\n MapBaseLayer,\n MapBicyclingLayer,\n MapCircle,\n MapDirectionsRenderer,\n MapGroundOverlay,\n MapHeatmapLayer,\n MapInfoWindow,\n MapKmlLayer,\n MapMarker,\n MapAdvancedMarker,\n DeprecatedMapMarkerClusterer,\n MapPolygon,\n MapPolyline,\n MapRectangle,\n MapTrafficLayer,\n MapTransitLayer,\n MapMarkerClusterer,\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n})\nexport class GoogleMapsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, NgZone, inject} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport interface MapDirectionsResponse {\n status: google.maps.DirectionsStatus;\n result?: google.maps.DirectionsResult;\n}\n\n/**\n * Angular service that wraps the Google Maps DirectionsService from the Google Maps JavaScript\n * API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService\n */\n@Injectable({providedIn: 'root'})\nexport class MapDirectionsService {\n private readonly _ngZone = inject(NgZone);\n private _directionsService: google.maps.DirectionsService | undefined;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsService.route\n */\n route(request: google.maps.DirectionsRequest): Observable<MapDirectionsResponse> {\n return new Observable(observer => {\n this._getService().then(service => {\n service.route(request, (result, status) => {\n this._ngZone.run(() => {\n observer.next({result: result || undefined, status});\n observer.complete();\n });\n });\n });\n });\n }\n\n private _getService(): Promise<google.maps.DirectionsService> {\n if (!this._directionsService) {\n if (google.maps.DirectionsService) {\n this._directionsService = new google.maps.DirectionsService();\n } else {\n return google.maps.importLibrary('routes').then(lib => {\n this._directionsService = new (lib as google.maps.RoutesLibrary).DirectionsService();\n return this._directionsService;\n });\n }\n }\n\n return Promise.resolve(this._directionsService);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, NgZone, inject} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport interface MapGeocoderResponse {\n status: google.maps.GeocoderStatus;\n results: google.maps.GeocoderResult[];\n}\n\n/**\n * Angular service that wraps the Google Maps Geocoder from the Google Maps JavaScript API.\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder\n */\n@Injectable({providedIn: 'root'})\nexport class MapGeocoder {\n private readonly _ngZone = inject(NgZone);\n private _geocoder: google.maps.Geocoder | undefined;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode\n */\n geocode(request: google.maps.GeocoderRequest): Observable<MapGeocoderResponse> {\n return new Observable(observer => {\n this._getGeocoder().then(geocoder => {\n geocoder.geocode(request, (results, status) => {\n this._ngZone.run(() => {\n observer.next({results: results || [], status});\n observer.complete();\n });\n });\n });\n });\n }\n\n private _getGeocoder(): Promise<google.maps.Geocoder> {\n if (!this._geocoder) {\n if (google.maps.Geocoder) {\n this._geocoder = new google.maps.Geocoder();\n } else {\n return google.maps.importLibrary('geocoding').then(lib => {\n this._geocoder = new (lib as google.maps.GeocodingLibrary).Geocoder();\n return this._geocoder;\n });\n }\n }\n\n return Promise.resolve(this._geocoder);\n }\n}\n"],"names":["MapEventManager","_ngZone","_pending","_listeners","_targetStream","BehaviorSubject","undefined","_clearListeners","listener","remove","constructor","getLazyEmitter","name","type","pipe","switchMap","target","observable","Observable","observer","push","handle","event","run","next","ngDevMode","addEventListener","removeEventListener","Error","addListener","complete","setTarget","currentTarget","value","forEach","subscriber","subscribe","destroy","DEFAULT_OPTIONS","center","lat","lng","zoom","mapTypeId","DEFAULT_HEIGHT","DEFAULT_WIDTH","GoogleMap","_elementRef","inject","ElementRef","NgZone","_eventManager","_mapEl","_existingAuthFailureCallback","googleMap","_isBrowser","height","width","mapId","_center","_zoom","options","_options","mapInitialized","EventEmitter","authFailure","boundsChanged","centerChanged","mapClick","mapDblclick","mapDrag","mapDragend","mapDragstart","headingChanged","idle","maptypeidChanged","mapMousemove","mapMouseout","mapMouseover","projectionChanged","mapRightclick","tilesloaded","tiltChanged","zoomChanged","platformId","PLATFORM_ID","isPlatformBrowser","googleMapsWindow","window","google","gm_authFailure","emit","ngOnChanges","changes","_setSize","setOptions","_combineOptions","setCenter","setZoom","setMapTypeId","ngOnInit","nativeElement","querySelector","maps","Map","_initialize","runOutsideAngular","importLibrary","then","lib","mapConstructor","ngOnDestroy","fitBounds","bounds","padding","_assertInitialized","panBy","x","y","panTo","latLng","panToBounds","latLngBounds","getBounds","getCenter","getClickableIcons","getHeading","getMapTypeId","getProjection","getStreetView","getTilt","getZoom","controls","data","mapTypes","overlayMapTypes","_resolveMap","Promise","resolve","take","toPromise","styles","style","coerceCssPixelValue","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","exportAs","template","Input","Output","cssUnitsPattern","test","MapBaseLayer","_map","_initializeObject","_setMap","_unsetMap","Directive","isStandalone","ngImport","MapBicyclingLayer","_zone","bicyclingLayer","bicyclingLayerInitialized","BicyclingLayer","all","map","layerConstructor","_assertLayerInitialized","setMap","outputs","MapCircle","_radius","_destroyed","Subject","circle","radius","circleClick","circleDblclick","circleDrag","circleDragend","circleDragstart","circleMousedown","circleMousemove","circleMouseout","circleMouseover","circleMouseup","radiusChanged","circleRightclick","circleInitialized","Circle","circleConstructor","_watchForOptionsChanges","_watchForCenterChanges","_watchForRadiusChanges","getDraggable","getEditable","getRadius","getVisible","combineLatest","combinedOptions","takeUntil","setRadius","inputs","MapDirectionsRenderer","_googleMap","directions","_directions","directionsChanged","directionsRendererInitialized","directionsRenderer","DirectionsRenderer","rendererConstructor","setDirections","getDirections","getPanel","getRouteIndex","usesOnChanges","MapGroundOverlay","_opacity","_url","_bounds","_hasWatchers","groundOverlay","url","clickable","opacity","groundOverlayInitialized","GroundOverlay","overlayConstructor","getValue","_watchForOpacityChanges","_watchForUrlChanges","getOpacity","getUrl","setOpacity","overlay","set","MapInfoWindow","_position","_destroy","infoWindow","position","closeclick","contentChanged","domready","positionChanged","zindexChanged","infoWindowInitialized","InfoWindow","infoWindowConstructor","_watchForPositionChanges","close","getContent","getPosition","getZIndex","openAdvancedMarkerElement","advancedMarkerElement","content","open","getAnchor","anchor","shouldFocus","anchorObject","get","display","setContent","setPosition","host","styleAttribute","MapKmlLayer","kmlLayer","kmlClick","defaultviewportChanged","statusChanged","kmlLayerInitialized","KmlLayer","getDefaultViewport","getMetadata","getStatus","setUrl","MAP_MARKER","InjectionToken","DEFAULT_MARKER_OPTIONS","MapMarker","title","_title","label","_label","_clickable","icon","_icon","visible","_visible","animationChanged","clickableChanged","cursorChanged","draggableChanged","flatChanged","iconChanged","mapMousedown","mapMouseup","shapeChanged","titleChanged","visibleChanged","markerInitialized","marker","Marker","markerConstructor","setTitle","setLabel","setClickable","setIcon","setVisible","getAnimation","getClickable","getCursor","getIcon","getLabel","getShape","getTitle","_resolveMarker","ɵdir","ɵɵngDeclareDirective","providers","provide","useExisting","DEFAULT_CLUSTERER_OPTIONS","DeprecatedMapMarkerClusterer","_currentMarkers","Set","_canInitialize","ariaLabelFn","averageCenter","_averageCenter","batchSize","batchSizeIE","_batchSizeIE","calculator","_calculator","clusterClass","_clusterClass","enableRetinaIcons","_enableRetinaIcons","gridSize","_gridSize","ignoreHidden","_ignoreHidden","imageExtension","_imageExtension","imagePath","_imagePath","imageSizes","_imageSizes","maxZoom","_maxZoom","minimumClusterSize","_minimumClusterSize","_styles","zIndex","_zIndex","zoomOnClick","_zoomOnClick","clusteringbegin","clusteringend","clusterClick","_markers","markerClusterer","markerClustererInitialized","MarkerClusterer","ngAfterContentInit","_watchForMarkerChanges","clusterer","setAverageCenter","setBatchSizeIE","setCalculator","setClusterClass","setEnableRetinaIcons","setGridSize","setIgnoreHidden","setImageExtension","setImagePath","setImageSizes","setMaxZoom","setMinimumClusterSize","setStyles","setZIndex","setZoomOnClick","fitMapToMarkers","getAverageCenter","getBatchSizeIE","getCalculator","getClusterClass","getClusters","getEnableRetinaIcons","getGridSize","getIgnoreHidden","getImageExtension","getImagePath","getImageSizes","getMaxZoom","getMinimumClusterSize","getStyles","getTotalClusters","getTotalMarkers","getZoomOnClick","_getInternalMarkers","markers","initialMarkers","add","addMarkers","markerComponents","newMarkers","markersToAdd","markersToRemove","Array","from","has","removeMarkers","repaint","delete","markerComponent","queries","propertyName","predicate","descendants","ContentChildren","MapPolygon","_paths","polygon","paths","polygonClick","polygonDblclick","polygonDrag","polygonDragend","polygonDragstart","polygonMousedown","polygonMousemove","polygonMouseout","polygonMouseover","polygonMouseup","polygonRightclick","polygonInitialized","Polygon","polygonConstructor","_watchForPathChanges","getPath","getPaths","setPaths","MapPolyline","_path","polyline","path","polylineClick","polylineDblclick","polylineDrag","polylineDragend","polylineDragstart","polylineMousedown","polylineMousemove","polylineMouseout","polylineMouseover","polylineMouseup","polylineRightclick","polylineInitialized","Polyline","polylineConstructor","setPath","MapRectangle","rectangle","rectangleClick","rectangleDblclick","rectangleDrag","rectangleDragend","rectangleDragstart","rectangleMousedown","rectangleMousemove","rectangleMouseout","rectangleMouseover","rectangleMouseup","rectangleRightclick","rectangleInitialized","Rectangle","rectangleConstructor","_watchForBoundsChanges","setBounds","MapTrafficLayer","_autoRefresh","trafficLayer","autoRefresh","trafficLayerInitialized","TrafficLayer","_watchForAutoRefreshChanges","MapTransitLayer","transitLayer","transitLayerInitialized","TransitLayer","MapHeatmapLayer","_data","heatmap","heatmapInitialized","visualization","HeatmapLayer","heatmapConstructor","setData","_normalizeData","getData","result","item","isLatLngLiteral","LatLng","MapAdvancedMarker","_content","gmpDraggable","draggable","_draggable","advancedMarker","AdvancedMarkerElement","advancedMarkerConstructor","MapMarkerClusterer","_closestMapEventManager","_markersSubscription","Subscription","EMPTY","renderer","algorithm","_createCluster","change","isFirstChange","unsubscribe","_destroyCluster","onClusterClick","cluster","observers","length","defaultOnClusterClickHandler","toArray","render","onRemove","COMPONENTS","GoogleMapsModule","NgModule","ɵmod","ɵɵngDeclareNgModule","imports","exports","MapDirectionsService","_directionsService","route","request","_getService","service","status","DirectionsService","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn","MapGeocoder","_geocoder","geocode","_getGeocoder","geocoder","results","Geocoder"],"mappings":"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"}
|