{"version":3,"file":"ng-agm-core-lib.mjs","sources":["../../../packages/core/src/lib/services/maps-api-loader/maps-api-loader.ts","../../../packages/core/src/lib/services/google-maps-api-wrapper.ts","../../../packages/core/src/lib/services/managers/circle-manager.ts","../../../packages/core/src/lib/services/managers/data-layer-manager.ts","../../../packages/core/src/lib/services/fit-bounds.ts","../../../packages/core/src/lib/services/geocoder-service.ts","../../../packages/core/src/lib/utils/browser-globals.ts","../../../packages/core/src/lib/services/maps-api-loader/lazy-maps-api-loader.ts","../../../packages/core/src/lib/services/managers/marker-manager.ts","../../../packages/core/src/lib/services/managers/info-window-manager.ts","../../../packages/core/src/lib/services/managers/kml-layer-manager.ts","../../../packages/core/src/lib/services/managers/layer-manager.ts","../../../packages/core/src/lib/services/maps-api-loader/noop-maps-api-loader.ts","../../../packages/core/src/lib/utils/mvcarray-utils.ts","../../../packages/core/src/lib/services/managers/polygon-manager.ts","../../../packages/core/src/lib/services/managers/polyline-manager.ts","../../../packages/core/src/lib/services/managers/rectangle-manager.ts","../../../packages/core/src/lib/directives/bicycling-layer.ts","../../../packages/core/src/lib/directives/circle.ts","../../../packages/core/src/lib/directives/data-layer.ts","../../../packages/core/src/lib/directives/fit-bounds.ts","../../../packages/core/src/lib/directives/info-window.ts","../../../packages/core/src/lib/directives/kml-layer.ts","../../../packages/core/src/lib/directives/map.ts","../../../packages/core/src/lib/directives/marker.ts","../../../packages/core/src/lib/directives/polygon.ts","../../../packages/core/src/lib/directives/polyline-icon.ts","../../../packages/core/src/lib/directives/polyline-point.ts","../../../packages/core/src/lib/directives/polyline.ts","../../../packages/core/src/lib/directives/rectangle.ts","../../../packages/core/src/lib/directives/transit-layer.ts","../../../packages/core/src/lib/core.module.ts","../../../packages/core/src/public-api.ts","../../../packages/core/src/ng-agm-core-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class MapsAPILoader {\n  abstract load(): Promise<void>;\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\n/**\n * Wrapper class that handles the communication with the Google Maps Javascript\n * API v3\n */\n@Injectable()\nexport class GoogleMapsAPIWrapper {\n  private _map: Promise<google.maps.Map>;\n  private _mapResolver: (value?: google.maps.Map) => void;\n\n  constructor(private _loader: MapsAPILoader, private _zone: NgZone) {\n    this._map =\n        new Promise<google.maps.Map>((resolve: (value: google.maps.Map) => void) => { this._mapResolver = resolve; });\n  }\n\n  createMap(el: HTMLElement, mapOptions: google.maps.MapOptions): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._loader.load().then(() => {\n        const map = new google.maps.Map(el, mapOptions);\n        this._mapResolver(map);\n        return;\n      });\n    });\n  }\n\n  setMapOptions(options: google.maps.MapOptions) {\n    return this._zone.runOutsideAngular(() => {\n      this._map.then((m: google.maps.Map) => { m.setOptions(options); });\n    });\n  }\n\n  /**\n   * Creates a google map marker with the map context\n   */\n  createMarker(options: google.maps.MarkerOptions = {}, addToMap: boolean = true):\n      Promise<google.maps.Marker> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => {\n        if (addToMap) {\n          options.map = map;\n        }\n        return new google.maps.Marker(options);\n      });\n    });\n  }\n\n  createInfoWindow(options?: google.maps.InfoWindowOptions): Promise<google.maps.InfoWindow> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then(() => new google.maps.InfoWindow(options));\n    });\n  }\n\n  /**\n   * Creates a google.map.Circle for the current map.\n   */\n  createCircle(options: google.maps.CircleOptions): Promise<google.maps.Circle> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => {\n        options.map = map;\n        return new google.maps.Circle(options);\n      });\n    });\n  }\n\n  /**\n   * Creates a google.map.Rectangle for the current map.\n   */\n  createRectangle(options: google.maps.RectangleOptions): Promise<google.maps.Rectangle> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => {\n        options.map = map;\n        return new google.maps.Rectangle(options);\n      });\n    });\n  }\n\n  createPolyline(options: google.maps.PolylineOptions): Promise<google.maps.Polyline> {\n    return this._zone.runOutsideAngular(() => {\n      return this.getNativeMap().then((map: google.maps.Map) => {\n        const line = new google.maps.Polyline(options);\n        line.setMap(map);\n        return line;\n      });\n    });\n  }\n\n  createPolygon(options: google.maps.PolygonOptions): Promise<google.maps.Polygon> {\n    return this._zone.runOutsideAngular(() => {\n      return this.getNativeMap().then((map: google.maps.Map) => {\n        const polygon = new google.maps.Polygon(options);\n        polygon.setMap(map);\n        return polygon;\n      });\n    });\n  }\n\n  /**\n   * Creates a new google.map.Data layer for the current map\n   */\n  createDataLayer(options?: google.maps.Data.DataOptions): Promise<google.maps.Data> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then(m => {\n        const data = new google.maps.Data(options);\n        data.setMap(m);\n        return data;\n      });\n    });\n  }\n\n  /**\n   * Creates a TransitLayer instance for a map\n   * @returns a new transit layer object\n   */\n  createTransitLayer(): Promise<google.maps.TransitLayer>{\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => {\n        const newLayer: google.maps.TransitLayer = new google.maps.TransitLayer();\n        newLayer.setMap(map);\n        return newLayer;\n      });\n    });\n  }\n\n  /**\n   * Creates a BicyclingLayer instance for a map\n   * @returns a new bicycling layer object\n   */\n  createBicyclingLayer(): Promise<google.maps.BicyclingLayer>{\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => {\n        const newLayer: google.maps.BicyclingLayer = new google.maps.BicyclingLayer();\n        newLayer.setMap(map);\n        return newLayer;\n      });\n    });\n  }\n\n  /**\n   * Determines if given coordinates are insite a Polygon path.\n   */\n  containsLocation(latLng: google.maps.LatLng, polygon: google.maps.Polygon): Promise<boolean> {\n    return this._map.then(() => google.maps.geometry.poly.containsLocation(latLng, polygon));\n  }\n\n  subscribeToMapEvent<N extends keyof google.maps.MapHandlerMap>(eventName: N)\n      : Observable<google.maps.MapHandlerMap[N]> {\n    return new Observable((observer) => {\n      this._map.then(m =>\n        m.addListener(eventName, (...evArgs) => this._zone.run(() => observer.next(evArgs)))\n      );\n    });\n  }\n\n  clearInstanceListeners() {\n    return this._zone.runOutsideAngular(() => {\n      this._map.then((map: google.maps.Map) => {\n        google.maps.event.clearInstanceListeners(map);\n      });\n    });\n  }\n\n  setCenter(latLng: google.maps.LatLngLiteral): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.setCenter(latLng));\n    });\n  }\n\n  getZoom(): Promise<number> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.getZoom());\n    });\n  }\n\n  getBounds(): Promise<google.maps.LatLngBounds> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.getBounds());\n    });\n  }\n\n  getMapTypeId(): Promise<google.maps.MapTypeId> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.getMapTypeId());\n    });\n  }\n\n  setZoom(zoom: number): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.setZoom(zoom));\n    });\n  }\n\n  getCenter(): Promise<google.maps.LatLng> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map: google.maps.Map) => map.getCenter());\n    });\n  }\n\n  panTo(latLng: google.maps.LatLng | google.maps.LatLngLiteral): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map) => map.panTo(latLng));\n    });\n  }\n\n  panBy(x: number, y: number): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map) => map.panBy(x, y));\n    });\n  }\n\n  fitBounds(latLng: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map) => map.fitBounds(latLng, padding));\n    });\n  }\n\n  panToBounds(latLng: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding): Promise<void> {\n    return this._zone.runOutsideAngular(() => {\n      return this._map.then((map) => map.panToBounds(latLng, padding));\n    });\n  }\n\n  /**\n   * Returns the native Google Maps Map instance. Be careful when using this instance directly.\n   */\n  getNativeMap(): Promise<google.maps.Map> { return this._map; }\n\n  /**\n   * Triggers the given event name on the map instance.\n   */\n  triggerMapEvent(eventName: string): Promise<void> {\n    return this._map.then((m) => google.maps.event.trigger(m, eventName));\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmCircle } from '../../directives/circle';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\n\n@Injectable()\nexport class CircleManager {\n  private _circles: Map<AgmCircle, Promise<google.maps.Circle>> =\n      new Map<AgmCircle, Promise<google.maps.Circle>>();\n\n  constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n  addCircle(circle: AgmCircle) {\n    this._circles.set(circle, this._apiWrapper.getNativeMap().then( () =>\n      this._apiWrapper.createCircle({\n        center: {lat: circle.latitude, lng: circle.longitude},\n        clickable: circle.clickable,\n        draggable: circle.draggable,\n        editable: circle.editable,\n        fillColor: circle.fillColor,\n        fillOpacity: circle.fillOpacity,\n        radius: circle.radius,\n        strokeColor: circle.strokeColor,\n        strokeOpacity: circle.strokeOpacity,\n        strokePosition: google.maps.StrokePosition[circle.strokePosition],\n        strokeWeight: circle.strokeWeight,\n        visible: circle.visible,\n        zIndex: circle.zIndex,\n      }))\n    );\n  }\n\n  /**\n   * Removes the given circle from the map.\n   */\n  removeCircle(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then((c) => {\n      c.setMap(null);\n      this._circles.delete(circle);\n    });\n  }\n\n  async setOptions(circle: AgmCircle, options: google.maps.CircleOptions) {\n    return this._circles.get(circle).then((c) => {\n      const actualParam = options.strokePosition as any as keyof typeof google.maps.StrokePosition;\n      options.strokePosition = google.maps.StrokePosition[actualParam];\n      c.setOptions(options);\n    });\n  }\n\n  getBounds(circle: AgmCircle): Promise<google.maps.LatLngBounds> {\n    return this._circles.get(circle).then((c) => c.getBounds());\n  }\n\n  getCenter(circle: AgmCircle): Promise<google.maps.LatLng> {\n    return this._circles.get(circle).then((c) => c.getCenter());\n  }\n\n  getRadius(circle: AgmCircle): Promise<number> {\n    return this._circles.get(circle).then((c) => c.getRadius());\n  }\n\n  setCenter(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then(\n        c => c.setCenter({lat: circle.latitude, lng: circle.longitude}));\n  }\n\n  setEditable(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then(c => c.setEditable(circle.editable));\n  }\n\n  setDraggable(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then(c => c.setDraggable(circle.draggable));\n  }\n\n  setVisible(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then(c => c.setVisible(circle.visible));\n  }\n\n  setRadius(circle: AgmCircle): Promise<void> {\n    return this._circles.get(circle).then(c => c.setRadius(circle.radius));\n  }\n\n  getNativeCircle(circle: AgmCircle): Promise<google.maps.Circle> {\n    return this._circles.get(circle);\n  }\n\n  createEventObservable<T>(eventName: string, circle: AgmCircle): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      let listener: google.maps.MapsEventListener = null;\n      this._circles.get(circle).then((c) => {\n        listener = c.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n\n      return () => {\n        if (listener !== null) {\n          listener.remove();\n        }\n      };\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmDataLayer } from './../../directives/data-layer';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\n\n/**\n * Manages all Data Layers for a Google Map instance.\n */\n@Injectable()\nexport class DataLayerManager {\n  private _layers: Map<AgmDataLayer, Promise<google.maps.Data>> =\n  new Map<AgmDataLayer, Promise<google.maps.Data>>();\n\n  constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\n\n  /**\n   * Adds a new Data Layer to the map.\n   */\n  addDataLayer(layer: AgmDataLayer) {\n    const newLayer = this._wrapper.createDataLayer({\n      style: layer.style,\n    } as google.maps.Data.DataOptions)\n    .then(d => {\n      if (layer.geoJson) {\n        // NOTE: accessing \"features\" on google.maps.Data is undocumented\n        this.getDataFeatures(d, layer.geoJson).then(features => (d as any).features = features);\n      }\n      return d;\n    });\n    this._layers.set(layer, newLayer);\n  }\n\n  deleteDataLayer(layer: AgmDataLayer) {\n    this._layers.get(layer).then(l => {\n      l.setMap(null);\n      this._layers.delete(layer);\n    });\n  }\n\n  updateGeoJson(layer: AgmDataLayer, geoJson: object | string) {\n    this._layers.get(layer).then(l => {\n      l.forEach(feature => {\n        l.remove(feature);\n\n        // NOTE: accessing \"features\" on google.maps.Data is undocumented\n        const index = (l as any).features.indexOf(feature, 0);\n        if (index > -1) {\n          (l as any).features.splice(index, 1);\n        }\n      });\n      this.getDataFeatures(l, geoJson).then(features => (l as any).features = features);\n    });\n  }\n\n  setDataOptions(layer: AgmDataLayer, options: google.maps.Data.DataOptions)\n  {\n    this._layers.get(layer).then(l => {\n      l.setControlPosition(options.controlPosition);\n      l.setControls(options.controls);\n      l.setDrawingMode(options.drawingMode);\n      l.setStyle(options.style);\n    });\n  }\n\n  /**\n   * Creates a Google Maps event listener for the given DataLayer as an Observable\n   */\n  createEventObservable<T>(eventName: string, layer: AgmDataLayer): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._layers.get(layer).then((d: google.maps.Data) => {\n        d.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n\n  /**\n   * Extract features from a geoJson using google.maps Data Class\n   * @param d : google.maps.Data class instance\n   * @param geoJson : url or geojson object\n   */\n  getDataFeatures(d: google.maps.Data, geoJson: object | string): Promise<google.maps.Data.Feature[]> {\n    return new Promise<google.maps.Data.Feature[]>((resolve, reject) => {\n        if (typeof geoJson === 'object') {\n          try {\n            const features = d.addGeoJson(geoJson);\n            resolve(features);\n          } catch (e) {\n            reject(e);\n          }\n        } else if (typeof geoJson === 'string') {\n          d.loadGeoJson(geoJson, null, resolve);\n        } else {\n          reject(`Impossible to extract features from geoJson: wrong argument type`);\n        }\n      });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, from, Observable, timer } from 'rxjs';\nimport {\n  flatMap,\n  map,\n  sample,\n  shareReplay,\n  switchMap,\n} from 'rxjs/operators';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\nexport interface FitBoundsDetails {\n  latLng: google.maps.LatLng | google.maps.LatLngLiteral;\n}\n\n/**\n * @internal\n */\nexport type BoundsMap = Map<string, google.maps.LatLng | google.maps.LatLngLiteral>;\n\n/**\n * Class to implement when you what to be able to make it work with the auto fit bounds feature\n * of AGM.\n */\nexport abstract class FitBoundsAccessor {\n  abstract getFitBoundsDetails$(): Observable<FitBoundsDetails>;\n}\n\n/**\n * The FitBoundsService is responsible for computing the bounds of the a single map.\n */\n@Injectable()\nexport class FitBoundsService {\n  protected readonly bounds$: Observable<google.maps.LatLngBounds>;\n  protected readonly _boundsChangeSampleTime$ = new BehaviorSubject<number>(200);\n  protected readonly _includeInBounds$ = new BehaviorSubject<BoundsMap>(new Map<string, google.maps.LatLng | google.maps.LatLngLiteral>());\n\n  constructor(loader: MapsAPILoader) {\n    this.bounds$ = from(loader.load()).pipe(\n      flatMap(() => this._includeInBounds$),\n      sample(\n        this._boundsChangeSampleTime$.pipe(switchMap(time => timer(0, time))),\n      ),\n      map(includeInBounds => this._generateBounds(includeInBounds)),\n      shareReplay(1),\n    );\n  }\n\n  private _generateBounds(\n    includeInBounds: Map<string, google.maps.LatLng | google.maps.LatLngLiteral>\n  ) {\n    const bounds = new google.maps.LatLngBounds();\n    includeInBounds.forEach(b => bounds.extend(b));\n    return bounds;\n  }\n\n  addToBounds(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\n    const id = this._createIdentifier(latLng);\n    if (this._includeInBounds$.value.has(id)) {\n      return;\n    }\n    const boundsMap = this._includeInBounds$.value;\n    boundsMap.set(id, latLng);\n    this._includeInBounds$.next(boundsMap);\n  }\n\n  removeFromBounds(latLng: google.maps.LatLng | google.maps.LatLngLiteral) {\n    const boundsMap = this._includeInBounds$.value;\n    boundsMap.delete(this._createIdentifier(latLng));\n    this._includeInBounds$.next(boundsMap);\n  }\n\n  changeFitBoundsChangeSampleTime(timeMs: number) {\n    this._boundsChangeSampleTime$.next(timeMs);\n  }\n\n  getBounds$(): Observable<google.maps.LatLngBounds> {\n    return this.bounds$;\n  }\n\n  protected _createIdentifier(latLng: google.maps.LatLng | google.maps.LatLngLiteral): string {\n    return `${latLng.lat}+${latLng.lng}`;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { bindCallback, ConnectableObservable, Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, multicast, switchMap } from 'rxjs/operators';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\n@Injectable({ providedIn: 'root' })\nexport class AgmGeocoder {\n  protected readonly geocoder$: Observable<google.maps.Geocoder>;\n\n  constructor(loader: MapsAPILoader) {\n    const connectableGeocoder$ = new Observable(subscriber => {\n      loader.load().then(() => subscriber.next());\n    })\n      .pipe(\n        map(() => this._createGeocoder()),\n        multicast(new ReplaySubject(1)),\n      ) as ConnectableObservable<google.maps.Geocoder>;\n\n    connectableGeocoder$.connect(); // ignore the subscription\n    // since we will remain subscribed till application exits\n\n    this.geocoder$ = connectableGeocoder$;\n  }\n\n  geocode(request: google.maps.GeocoderRequest): Observable<google.maps.GeocoderResult[]> {\n    return this.geocoder$.pipe(\n      switchMap((geocoder) => this._getGoogleResults(geocoder, request))\n    );\n  }\n\n  private _getGoogleResults(geocoder: google.maps.Geocoder, request: google.maps.GeocoderRequest):\n       Observable<google.maps.GeocoderResult[]> {\n    const geocodeObservable = bindCallback(geocoder.geocode);\n    return geocodeObservable(request).pipe(\n      switchMap(([results, status]) => {\n        if (status === google.maps.GeocoderStatus.OK) {\n          return of(results);\n        }\n\n        return throwError(status);\n      })\n    );\n  }\n\n  private _createGeocoder() {\n    return new google.maps.Geocoder();\n  }\n}\n","import { Provider } from '@angular/core';\n\nexport class WindowRef {\n  getNativeWindow(): any { return window; }\n}\n\nexport class DocumentRef {\n  getNativeDocument(): any { return document; }\n}\n\nexport const BROWSER_GLOBALS_PROVIDERS: Provider[] = [WindowRef, DocumentRef];\n","import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\n\nimport { DocumentRef, WindowRef } from '../../utils/browser-globals';\n\nimport { MapsAPILoader } from './maps-api-loader';\n\nexport enum GoogleMapsScriptProtocol {\n  HTTP = 1,\n  HTTPS = 2,\n  AUTO = 3,\n}\n\n/**\n * Token for the config of the LazyMapsAPILoader. Please provide an object of type {@link\n * LazyMapsAPILoaderConfig}.\n */\nexport const LAZY_MAPS_API_CONFIG = new InjectionToken<LazyMapsAPILoaderConfigLiteral>('angular-google-maps LAZY_MAPS_API_CONFIG');\n\n/**\n * Configuration for the {@link LazyMapsAPILoader}.\n */\nexport interface LazyMapsAPILoaderConfigLiteral {\n  /**\n   * The Google Maps API Key (see:\n   * https://developers.google.com/maps/documentation/javascript/get-api-key)\n   */\n  apiKey?: string;\n\n  /**\n   * The Google Maps client ID (for premium plans).\n   * When you have a Google Maps APIs Premium Plan license, you must authenticate\n   * your application with either an API key or a client ID.\n   * The Google Maps API will fail to load if both a client ID and an API key are included.\n   */\n  clientId?: string;\n\n  /**\n   * The Google Maps channel name (for premium plans).\n   * A channel parameter is an optional parameter that allows you to track usage under your client\n   * ID by assigning a distinct channel to each of your applications.\n   */\n  channel?: string;\n\n  /**\n   * Google Maps API version.\n   */\n  apiVersion?: string;\n\n  /**\n   * Host and Path used for the `<script>` tag.\n   */\n  hostAndPath?: string;\n\n  /**\n   * Protocol used for the `<script>` tag.\n   */\n  protocol?: GoogleMapsScriptProtocol;\n\n  /**\n   * Defines which Google Maps libraries should get loaded.\n   */\n  libraries?: string[];\n\n  /**\n   * The default bias for the map behavior is US.\n   * If you wish to alter your application to serve different map tiles or bias the\n   * application, you can overwrite the default behavior (US) by defining a `region`.\n   * See https://developers.google.com/maps/documentation/javascript/basics#Region\n   */\n  region?: string;\n\n  /**\n   * The Google Maps API uses the browser's preferred language when displaying\n   * textual information. If you wish to overwrite this behavior and force the API\n   * to use a given language, you can use this setting.\n   * See https://developers.google.com/maps/documentation/javascript/basics#Language\n   */\n  language?: string;\n}\n\n@Injectable()\nexport class LazyMapsAPILoader extends MapsAPILoader {\n  protected _scriptLoadingPromise: Promise<void>;\n  protected _config: LazyMapsAPILoaderConfigLiteral;\n  protected _windowRef: WindowRef;\n  protected _documentRef: DocumentRef;\n  protected readonly _SCRIPT_ID: string = 'agmGoogleMapsApiScript';\n  protected readonly callbackName: string = `agmLazyMapsAPILoader`;\n\n  constructor(@Optional() @Inject(LAZY_MAPS_API_CONFIG) config: any = null, w: WindowRef, d: DocumentRef,\n              @Inject(LOCALE_ID) private localeId: string) {\n    super();\n    this._config = config || {};\n    this._windowRef = w;\n    this._documentRef = d;\n  }\n\n  load(): Promise<void> {\n    const window = this._windowRef.getNativeWindow() as any;\n    if (window.google && window.google.maps) {\n      // Google maps already loaded on the page.\n      return Promise.resolve();\n    }\n\n    if (this._scriptLoadingPromise) {\n      return this._scriptLoadingPromise;\n    }\n\n    // this can happen in HMR situations or Stackblitz.io editors.\n    const scriptOnPage = this._documentRef.getNativeDocument().getElementById(this._SCRIPT_ID);\n    if (scriptOnPage) {\n      this._assignScriptLoadingPromise(scriptOnPage);\n      return this._scriptLoadingPromise;\n    }\n\n    const script = this._documentRef.getNativeDocument().createElement('script');\n    script.type = 'text/javascript';\n    script.async = true;\n    script.defer = true;\n    script.id = this._SCRIPT_ID;\n    script.src = this._getScriptSrc(this.callbackName);\n    this._assignScriptLoadingPromise(script);\n    this._documentRef.getNativeDocument().body.appendChild(script);\n    return this._scriptLoadingPromise;\n  }\n\n  private _assignScriptLoadingPromise(scriptElem: HTMLElement) {\n    this._scriptLoadingPromise = new Promise((resolve, reject) => {\n      this._windowRef.getNativeWindow()[this.callbackName] = () => {\n        resolve();\n      };\n\n      scriptElem.onerror = (error: Event) => {\n        reject(error);\n      };\n    });\n  }\n\n  protected _getScriptSrc(callbackName: string): string {\n    const protocolType: GoogleMapsScriptProtocol =\n        (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\n    let protocol: string;\n\n    switch (protocolType) {\n      case GoogleMapsScriptProtocol.AUTO:\n        protocol = '';\n        break;\n      case GoogleMapsScriptProtocol.HTTP:\n        protocol = 'http:';\n        break;\n      case GoogleMapsScriptProtocol.HTTPS:\n        protocol = 'https:';\n        break;\n    }\n\n    const hostAndPath: string = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\n    const queryParams: {[key: string]: string | string[]} = {\n      v: this._config.apiVersion || 'quarterly',\n      callback: callbackName,\n      key: this._config.apiKey,\n      client: this._config.clientId,\n      channel: this._config.channel,\n      libraries: this._config.libraries,\n      region: this._config.region,\n      language: this._config.language || (this.localeId !== 'en-US' ? this.localeId : null),\n    };\n    const params: string = Object.keys(queryParams)\n                               .filter((k: string) => queryParams[k] != null)\n                               .filter((k: string) => {\n                                 // remove empty arrays\n                                 return !Array.isArray(queryParams[k]) ||\n                                     (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\n                               })\n                               .map((k: string) => {\n                                 // join arrays as comma seperated strings\n                                 const i = queryParams[k];\n                                 if (Array.isArray(i)) {\n                                   return {key: k, value: i.join(',')};\n                                 }\n                                 return {key: k, value: queryParams[k]};\n                               })\n                               .map((entry: {key: string, value: string}) => {\n                                 return `${entry.key}=${entry.value}`;\n                               })\n                               .join('&');\n    return `${protocol}//${hostAndPath}?${params}`;\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AgmMarker } from './../../directives/marker';\n\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\n\n@Injectable()\nexport class MarkerManager {\n  protected _markers: Map<AgmMarker, Promise<google.maps.Marker>> =\n      new Map<AgmMarker, Promise<google.maps.Marker>>();\n\n  constructor(protected _mapsWrapper: GoogleMapsAPIWrapper, protected _zone: NgZone) {}\n\n  async convertAnimation(uiAnim: keyof typeof google.maps.Animation | null) {\n    if (uiAnim === null) {\n      return null;\n    } else {\n      return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]);\n    }\n  }\n\n  deleteMarker(markerDirective: AgmMarker): Promise<void> {\n    const markerPromise = this._markers.get(markerDirective);\n    if (markerPromise == null) {\n      // marker already deleted\n      return Promise.resolve();\n    }\n    return markerPromise.then((marker: google.maps.Marker) => {\n      return this._zone.run(() => {\n        marker.setMap(null);\n        this._markers.delete(markerDirective);\n      });\n    });\n  }\n\n  updateMarkerPosition(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then(\n        (m: google.maps.Marker) => m.setPosition({lat: marker.latitude, lng: marker.longitude}));\n  }\n\n  updateTitle(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setTitle(marker.title));\n  }\n\n  updateLabel(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => { m.setLabel(marker.label); });\n  }\n\n  updateDraggable(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setDraggable(marker.draggable));\n  }\n\n  updateIcon(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setIcon(marker.iconUrl));\n  }\n\n  updateOpacity(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setOpacity(marker.opacity));\n  }\n\n  updateVisible(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setVisible(marker.visible));\n  }\n\n  updateZIndex(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setZIndex(marker.zIndex));\n  }\n\n  updateClickable(marker: AgmMarker): Promise<void> {\n    return this._markers.get(marker).then((m: google.maps.Marker) => m.setClickable(marker.clickable));\n  }\n\n  async updateAnimation(marker: AgmMarker) {\n    const m = await this._markers.get(marker);\n    m.setAnimation(await this.convertAnimation(marker.animation));\n  }\n\n  addMarker(marker: AgmMarker) {\n    const markerPromise = new Promise<google.maps.Marker>(async (resolve) =>\n     this._mapsWrapper.createMarker({\n        position: {lat: marker.latitude, lng: marker.longitude},\n        label: marker.label,\n        draggable: marker.draggable,\n        icon: marker.iconUrl,\n        opacity: marker.opacity,\n        visible: marker.visible,\n        zIndex: marker.zIndex,\n        title: marker.title,\n        clickable: marker.clickable,\n        animation: await this.convertAnimation(marker.animation),\n      }).then(resolve));\n    this._markers.set(marker, markerPromise);\n  }\n\n  getNativeMarker(marker: AgmMarker): Promise<google.maps.Marker> {\n    return this._markers.get(marker);\n  }\n\n  createEventObservable<T extends (google.maps.MouseEvent | void)>(\n      eventName: google.maps.MarkerMouseEventNames | google.maps.MarkerChangeOptionEventNames,\n      marker: AgmMarker): Observable<T> {\n    return new Observable(observer => {\n      this._markers.get(marker).then(m =>\n        m.addListener(eventName, e => this._zone.run(() => observer.next(e)))\n      );\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmInfoWindow } from '../../directives/info-window';\n\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { MarkerManager } from './marker-manager';\n\n@Injectable()\nexport class InfoWindowManager {\n  private _infoWindows: Map<AgmInfoWindow, Promise<google.maps.InfoWindow>> =\n      new Map<AgmInfoWindow, Promise<google.maps.InfoWindow>>();\n\n  constructor(\n      private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone,\n      private _markerManager: MarkerManager) {}\n\n  deleteInfoWindow(infoWindow: AgmInfoWindow): Promise<void> {\n    const iWindow = this._infoWindows.get(infoWindow);\n    if (iWindow == null) {\n      // info window already deleted\n      return Promise.resolve();\n    }\n    return iWindow.then((i: google.maps.InfoWindow) => {\n      return this._zone.run(() => {\n        i.close();\n        this._infoWindows.delete(infoWindow);\n      });\n    });\n  }\n\n  setPosition(infoWindow: AgmInfoWindow): Promise<void> {\n    return this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => i.setPosition({\n      lat: infoWindow.latitude,\n      lng: infoWindow.longitude,\n    }));\n  }\n\n  setZIndex(infoWindow: AgmInfoWindow): Promise<void> {\n    return this._infoWindows.get(infoWindow)\n        .then((i: google.maps.InfoWindow) => i.setZIndex(infoWindow.zIndex));\n  }\n\n  open(infoWindow: AgmInfoWindow): Promise<void> {\n    return this._infoWindows.get(infoWindow).then((w) => {\n      if (infoWindow.hostMarker != null) {\n        return this._markerManager.getNativeMarker(infoWindow.hostMarker).then((marker) => {\n          return this._mapsWrapper.getNativeMap().then((map) => w.open(map, marker));\n        });\n      }\n      return this._mapsWrapper.getNativeMap().then((map) => w.open(map));\n    });\n  }\n\n  close(infoWindow: AgmInfoWindow): Promise<void> {\n    return this._infoWindows.get(infoWindow).then((w) => w.close());\n  }\n\n  setOptions(infoWindow: AgmInfoWindow, options: google.maps.InfoWindowOptions) {\n    return this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => i.setOptions(options));\n  }\n\n  addInfoWindow(infoWindow: AgmInfoWindow) {\n    const options: google.maps.InfoWindowOptions = {\n      content: infoWindow.content,\n      maxWidth: infoWindow.maxWidth,\n      zIndex: infoWindow.zIndex,\n      disableAutoPan: infoWindow.disableAutoPan,\n    };\n    if (typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number') {\n      options.position = {lat: infoWindow.latitude, lng: infoWindow.longitude};\n    }\n    const infoWindowPromise = this._mapsWrapper.createInfoWindow(options);\n    this._infoWindows.set(infoWindow, infoWindowPromise);\n  }\n\n   /**\n    * Creates a Google Maps event listener for the given InfoWindow as an Observable\n    */\n  createEventObservable<T>(eventName: string, infoWindow: AgmInfoWindow): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._infoWindows.get(infoWindow).then((i: google.maps.InfoWindow) => {\n        i.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmKmlLayer } from './../../directives/kml-layer';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\n\n/**\n * Manages all KML Layers for a Google Map instance.\n */\n@Injectable()\nexport class KmlLayerManager {\n  private _layers: Map<AgmKmlLayer, Promise<google.maps.KmlLayer>> =\n      new Map<AgmKmlLayer, Promise<google.maps.KmlLayer>>();\n\n  constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n  /**\n   * Adds a new KML Layer to the map.\n   */\n  addKmlLayer(layer: AgmKmlLayer) {\n    const newLayer = this._wrapper.getNativeMap().then(m => {\n      return new google.maps.KmlLayer({\n        clickable: layer.clickable,\n        map: m,\n        preserveViewport: layer.preserveViewport,\n        screenOverlays: layer.screenOverlays,\n        suppressInfoWindows: layer.suppressInfoWindows,\n        url: layer.url,\n        zIndex: layer.zIndex,\n      });\n    });\n    this._layers.set(layer, newLayer);\n  }\n\n  setOptions(layer: AgmKmlLayer, options: google.maps.KmlLayerOptions) {\n    this._layers.get(layer).then(l => l.setOptions(options));\n  }\n\n  deleteKmlLayer(layer: AgmKmlLayer) {\n    this._layers.get(layer).then(l => {\n      l.setMap(null);\n      this._layers.delete(layer);\n    });\n  }\n\n  /**\n   * Creates a Google Maps event listener for the given KmlLayer as an Observable\n   */\n  createEventObservable<T>(eventName: string, layer: AgmKmlLayer): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._layers.get(layer).then((m: google.maps.KmlLayer) => {\n        m.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AgmBicyclingLayer } from '../../directives/bicycling-layer';\nimport { AgmTransitLayer } from '../../directives/transit-layer';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\n\n/**\n * This class manages Transit and Bicycling Layers for a Google Map instance.\n */\n\n@Injectable()\nexport class LayerManager {\n    private _layers: Map<AgmTransitLayer | AgmBicyclingLayer, Promise<google.maps.TransitLayer | google.maps.BicyclingLayer>> =\n        new Map<AgmTransitLayer | AgmBicyclingLayer, Promise<google.maps.TransitLayer | google.maps.BicyclingLayer>>();\n\n    constructor(private _wrapper: GoogleMapsAPIWrapper) {}\n\n    /**\n     * Adds a transit layer to a map instance.\n     * @param layer - a TransitLayer object\n     * @param _options - TransitLayerOptions options\n     * @returns void\n     */\n    addTransitLayer(layer: AgmTransitLayer): void {\n        const newLayer = this._wrapper.createTransitLayer();\n        this._layers.set(layer, newLayer);\n    }\n\n    /**\n     * Adds a bicycling layer to a map instance.\n     * @param layer - a bicycling layer object\n     * @param _options - BicyclingLayer options\n     * @returns void\n     */\n    addBicyclingLayer(layer: AgmBicyclingLayer): void {\n        const newLayer = this._wrapper.createBicyclingLayer();\n        this._layers.set(layer, newLayer);\n    }\n\n    /**\n     * Deletes a map layer\n     * @param layer - the layer to delete\n     */\n    deleteLayer(layer: AgmTransitLayer | AgmBicyclingLayer): Promise<void> {\n        return this._layers.get(layer).then(currentLayer => {\n            currentLayer.setMap(null);\n            this._layers.delete(layer);\n        });\n    }\n}\n","import { MapsAPILoader } from './maps-api-loader';\n\n/**\n * When using the NoOpMapsAPILoader, the Google Maps API must be added to the page via a `<script>`\n * Tag.\n * It's important that the Google Maps API script gets loaded first on the page.\n */\nexport class NoOpMapsAPILoader implements MapsAPILoader {\n  load(): Promise<void> {\n    if (!(window as any).google || !(window as any).google.maps) {\n      throw new Error(\n          'Google Maps API not loaded on page. Make sure window.google.maps is available!');\n    }\n    return Promise.resolve();\n  }\n}\n","import { fromEventPattern, Observable } from 'rxjs';\n\nexport function createMVCEventObservable<T>(array: google.maps.MVCArray<T>): Observable<MVCEvent<T>>{\n  const eventNames = ['insert_at', 'remove_at', 'set_at'];\n  return fromEventPattern(\n    handler => eventNames.map(eventName => array.addListener(eventName,\n      (index: number, previous?: T) => handler.apply(array, [ {newArr: array.getArray(), eventName, index, previous} as MVCEvent<T>]))),\n    (_handler, evListeners: google.maps.MapsEventListener[]) => evListeners.forEach(evListener => evListener.remove()));\n}\n\nexport type MvcEventType = 'insert_at' | 'remove_at' | 'set_at';\n\nexport interface MVCEvent<T> {\n  newArr: T[];\n  eventName: MvcEventType;\n  index: number;\n  previous?: T;\n}\n\nexport class MvcArrayMock<T> implements google.maps.MVCArray<T> {\n  private vals: T[] = [];\n  private listeners: {\n    'remove_at': ((i: number, r: T) => void)[];\n    'insert_at': ((i: number) => void)[];\n    'set_at': ((i: number, val: T) => void)[];\n  } = {\n    remove_at: [],\n    insert_at: [],\n    set_at: [],\n  };\n  clear(): void {\n    for (let i = this.vals.length - 1; i >= 0; i--) {\n        this.removeAt(i);\n    }\n  }\n  getArray(): T[] {\n    return [...this.vals];\n  }\n  getAt(i: number): T {\n    return this.vals[i];\n  }\n  getLength(): number {\n    return this.vals.length;\n  }\n  insertAt(i: number, elem: T): void {\n    this.vals.splice(i, 0, elem);\n    this.listeners.insert_at.forEach(listener => listener(i));\n  }\n  pop(): T {\n    const deleted = this.vals.pop();\n    this.listeners.remove_at.forEach(listener => listener(this.vals.length, deleted));\n    return deleted;\n  }\n  push(elem: T): number {\n    this.vals.push(elem);\n    this.listeners.insert_at.forEach(listener => listener(this.vals.length - 1));\n    return this.vals.length;\n  }\n  removeAt(i: number): T {\n    const deleted = this.vals.splice(i, 1)[0];\n    this.listeners.remove_at.forEach(listener => listener(i, deleted));\n    return deleted;\n  }\n  setAt(i: number, elem: T): void {\n    const deleted = this.vals[i];\n    this.vals[i] = elem;\n    this.listeners.set_at.forEach(listener => listener(i, deleted));\n  }\n  forEach(callback: (elem: T, i: number) => void): void {\n    this.vals.forEach(callback);\n  }\n  addListener(eventName: 'remove_at' | 'insert_at' | 'set_at', handler: (...args: any[]) => void): google.maps.MapsEventListener {\n    const listenerArr = this.listeners[eventName];\n    listenerArr.push(handler);\n    return {\n        remove: () => {\n            listenerArr.splice(listenerArr.indexOf(handler), 1);\n        },\n    };\n  }\n\n  bindTo(): never { throw new Error('Not implemented'); }\n  changed(): never { throw new Error('Not implemented'); }\n  get(): never { throw new Error('Not implemented'); }\n  notify(): never { throw new Error('Not implemented'); }\n  set(): never { throw new Error('Not implemented'); }\n  setValues(): never { throw new Error('Not implemented'); }\n  unbind(): never { throw new Error('Not implemented'); }\n  unbindAll(): never { throw new Error('Not implemented'); }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { merge, Observable, Observer } from 'rxjs';\nimport { map, skip, startWith, switchMap } from 'rxjs/operators';\n\nimport { AgmPolygon } from '../../directives/polygon';\nimport { createMVCEventObservable, MVCEvent } from '../../utils/mvcarray-utils';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\n\n@Injectable()\nexport class PolygonManager {\n  private _polygons: Map<AgmPolygon, Promise<google.maps.Polygon>> =\n    new Map<AgmPolygon, Promise<google.maps.Polygon>>();\n\n  constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\n\n  addPolygon(path: AgmPolygon) {\n    const polygonPromise = this._mapsWrapper.createPolygon({\n      clickable: path.clickable,\n      draggable: path.draggable,\n      editable: path.editable,\n      fillColor: path.fillColor,\n      fillOpacity: path.fillOpacity,\n      geodesic: path.geodesic,\n      paths: path.paths,\n      strokeColor: path.strokeColor,\n      strokeOpacity: path.strokeOpacity,\n      strokeWeight: path.strokeWeight,\n      visible: path.visible,\n      zIndex: path.zIndex,\n    });\n    this._polygons.set(path, polygonPromise);\n  }\n\n  updatePolygon(polygon: AgmPolygon): Promise<void> {\n    const m = this._polygons.get(polygon);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polygon) => this._zone.run(() => { l.setPaths(polygon.paths); }));\n  }\n\n  setPolygonOptions(path: AgmPolygon, options: { [propName: string]: any }): Promise<void> {\n    return this._polygons.get(path).then((l: google.maps.Polygon) => { l.setOptions(options); });\n  }\n\n  deletePolygon(paths: AgmPolygon): Promise<void> {\n    const m = this._polygons.get(paths);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polygon) => {\n      return this._zone.run(() => {\n        l.setMap(null);\n        this._polygons.delete(paths);\n      });\n    });\n  }\n\n  getPath(polygonDirective: AgmPolygon): Promise<google.maps.LatLng[]> {\n    return this._polygons.get(polygonDirective)\n      .then((polygon) => polygon.getPath().getArray());\n  }\n\n  getPaths(polygonDirective: AgmPolygon): Promise<google.maps.LatLng[][]> {\n    return this._polygons.get(polygonDirective)\n      .then((polygon) => polygon.getPaths().getArray().map((p) => p.getArray()));\n  }\n\n  createEventObservable<T>(eventName: string, path: AgmPolygon): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._polygons.get(path).then((l: google.maps.Polygon) => {\n        l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n\n  async createPathEventObservable(agmPolygon: AgmPolygon):\n        Promise<Observable<MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>>> {\n    const polygon = await this._polygons.get(agmPolygon);\n    const paths = polygon.getPaths();\n    const pathsChanges$ = createMVCEventObservable(paths);\n    return pathsChanges$.pipe(\n      startWith(({ newArr: paths.getArray() } as MVCEvent<google.maps.MVCArray<google.maps.LatLng>>)), // in order to subscribe to them all\n      switchMap(parentMVEvent => merge(...// rest parameter\n        parentMVEvent.newArr.map((chMVC, index) =>\n          createMVCEventObservable(chMVC)\n          .pipe(map(chMVCEvent => ({ parentMVEvent, chMVCEvent, pathIndex: index })))))\n        .pipe( // start the merged ob with an event signinifing change to parent\n          startWith({ parentMVEvent, chMVCEvent: null, pathIndex: null }))\n      ),\n      skip(1), // skip the manually added event\n      map(({ parentMVEvent, chMVCEvent, pathIndex }) => {\n        let retVal;\n        if (!chMVCEvent) {\n          retVal = {\n            newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\n            eventName: parentMVEvent.eventName,\n            index: parentMVEvent.index,\n          } as MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>;\n          if (parentMVEvent.previous) {\n            retVal.previous =  parentMVEvent.previous.getArray();\n          }\n        } else {\n          retVal = {\n            newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\n            pathIndex,\n            eventName: chMVCEvent.eventName,\n            index: chMVCEvent.index,\n          } as unknown as MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>;\n          if (chMVCEvent.previous) {\n            retVal.previous = chMVCEvent.previous;\n          }\n        }\n        return retVal;\n      }));\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmPolyline } from '../../directives/polyline';\nimport { AgmPolylinePoint } from '../../directives/polyline-point';\nimport { createMVCEventObservable, MVCEvent } from '../../utils/mvcarray-utils';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\n\n@Injectable()\nexport class PolylineManager {\n  private _polylines: Map<AgmPolyline, Promise<google.maps.Polyline>> =\n      new Map<AgmPolyline, Promise<google.maps.Polyline>>();\n\n  constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n  private static _convertPoints(line: AgmPolyline): google.maps.LatLngLiteral[] {\n    const path = line._getPoints().map((point: AgmPolylinePoint) => {\n      return {lat: point.latitude, lng: point.longitude} as google.maps.LatLngLiteral;\n    });\n    return path;\n  }\n\n  private static _convertPath(path: keyof typeof google.maps.SymbolPath | string): google.maps.SymbolPath | string {\n    const symbolPath = google.maps.SymbolPath[path as keyof typeof google.maps.SymbolPath];\n    if (typeof symbolPath === 'number') {\n      return symbolPath;\n    } else{\n      return path;\n    }\n  }\n\n  private static _convertIcons(line: AgmPolyline): Array<google.maps.IconSequence> {\n    const icons = line._getIcons().map(agmIcon => ({\n      fixedRotation: agmIcon.fixedRotation,\n      offset: agmIcon.offset,\n      repeat: agmIcon.repeat,\n      icon: {\n        anchor: new google.maps.Point(agmIcon.anchorX, agmIcon.anchorY),\n        fillColor: agmIcon.fillColor,\n        fillOpacity: agmIcon.fillOpacity,\n        path: PolylineManager._convertPath(agmIcon.path),\n        rotation: agmIcon.rotation,\n        scale: agmIcon.scale,\n        strokeColor: agmIcon.strokeColor,\n        strokeOpacity: agmIcon.strokeOpacity,\n        strokeWeight: agmIcon.strokeWeight,\n      },\n    } as google.maps.IconSequence));\n    // prune undefineds;\n    icons.forEach(icon => {\n      Object.entries(icon).forEach(([key, val]) => {\n        if (typeof val === 'undefined') {\n          delete (icon as any)[key];\n        }\n      });\n      if (typeof icon.icon.anchor.x === 'undefined' ||\n        typeof icon.icon.anchor.y === 'undefined') {\n          delete icon.icon.anchor;\n        }\n    });\n    return icons;\n  }\n\n  addPolyline(line: AgmPolyline) {\n    const polylinePromise = this._mapsWrapper.getNativeMap()\n    .then(() => [ PolylineManager._convertPoints(line),\n                  PolylineManager._convertIcons(line)])\n    .then(([path, icons]: [google.maps.LatLngLiteral[], google.maps.IconSequence[]]) =>\n      this._mapsWrapper.createPolyline({\n        clickable: line.clickable,\n        draggable: line.draggable,\n        editable: line.editable,\n        geodesic: line.geodesic,\n        strokeColor: line.strokeColor,\n        strokeOpacity: line.strokeOpacity,\n        strokeWeight: line.strokeWeight,\n        visible: line.visible,\n        zIndex: line.zIndex,\n        path,\n        icons,\n    }));\n    this._polylines.set(line, polylinePromise);\n  }\n\n  updatePolylinePoints(line: AgmPolyline): Promise<void> {\n    const path = PolylineManager._convertPoints(line);\n    const m = this._polylines.get(line);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l) => this._zone.run(() => l.setPath(path)));\n  }\n\n  async updateIconSequences(line: AgmPolyline): Promise<void> {\n    await this._mapsWrapper.getNativeMap();\n    const icons = PolylineManager._convertIcons(line);\n    const m = this._polylines.get(line);\n    if (m == null) {\n      return;\n    }\n    return m.then(l => this._zone.run(() => l.setOptions({icons}) ) );\n  }\n\n  setPolylineOptions(line: AgmPolyline, options: {[propName: string]: any}):\n      Promise<void> {\n    return this._polylines.get(line).then((l: google.maps.Polyline) => { l.setOptions(options); });\n  }\n\n  deletePolyline(line: AgmPolyline): Promise<void> {\n    const m = this._polylines.get(line);\n    if (m == null) {\n      return Promise.resolve();\n    }\n    return m.then((l: google.maps.Polyline) => {\n      return this._zone.run(() => {\n        l.setMap(null);\n        this._polylines.delete(line);\n      });\n    });\n  }\n\n  private async getMVCPath(agmPolyline: AgmPolyline): Promise<google.maps.MVCArray<google.maps.LatLng>> {\n    const polyline = await this._polylines.get(agmPolyline);\n    return polyline.getPath();\n  }\n\n  async getPath(agmPolyline: AgmPolyline): Promise<google.maps.LatLng[]> {\n    return (await this.getMVCPath(agmPolyline)).getArray();\n  }\n\n  createEventObservable<T>(eventName: string, line: AgmPolyline): Observable<T> {\n    return new Observable((observer: Observer<T>) => {\n      this._polylines.get(line).then((l: google.maps.Polyline) => {\n        l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n      });\n    });\n  }\n\n  async createPathEventObservable(line: AgmPolyline): Promise<Observable<MVCEvent<google.maps.LatLng>>> {\n    const mvcPath = await this.getMVCPath(line);\n    return createMVCEventObservable(mvcPath);\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { Observable, Subscriber } from 'rxjs';\n\nimport { AgmRectangle } from '../../directives/rectangle';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\n\n@Injectable()\nexport class RectangleManager {\n  private _rectangles: Map<AgmRectangle, Promise<google.maps.Rectangle>> =\n      new Map<AgmRectangle, Promise<google.maps.Rectangle>>();\n\n  constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n  addRectangle(rectangle: AgmRectangle) {\n    this._rectangles.set(rectangle, this._apiWrapper.getNativeMap().then( () =>\n      this._apiWrapper.createRectangle({\n        bounds: {\n          north: rectangle.north,\n          east: rectangle.east,\n          south: rectangle.south,\n          west: rectangle.west,\n        },\n        clickable: rectangle.clickable,\n        draggable: rectangle.draggable,\n        editable: rectangle.editable,\n        fillColor: rectangle.fillColor,\n        fillOpacity: rectangle.fillOpacity,\n        strokeColor: rectangle.strokeColor,\n        strokeOpacity: rectangle.strokeOpacity,\n        strokePosition: google.maps.StrokePosition[rectangle.strokePosition],\n        strokeWeight: rectangle.strokeWeight,\n        visible: rectangle.visible,\n        zIndex: rectangle.zIndex,\n      }))\n    );\n  }\n\n  /**\n   * Removes the given rectangle from the map.\n   */\n  removeRectangle(rectangle: AgmRectangle): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      r.setMap(null);\n      this._rectangles.delete(rectangle);\n    });\n  }\n\n  setOptions(rectangle: AgmRectangle, options: google.maps.RectangleOptions): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      const actualStrokePosition = options.strokePosition as any as keyof typeof google.maps.StrokePosition;\n      options.strokePosition = google.maps.StrokePosition[actualStrokePosition];\n      r.setOptions(options);\n    });\n  }\n\n  getBounds(rectangle: AgmRectangle): Promise<google.maps.LatLngBounds> {\n    return this._rectangles.get(rectangle).then((r) => r.getBounds());\n  }\n\n  setBounds(rectangle: AgmRectangle): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      return r.setBounds({\n        north: rectangle.north,\n        east: rectangle.east,\n        south: rectangle.south,\n        west: rectangle.west,\n      });\n    });\n  }\n\n  setEditable(rectangle: AgmRectangle): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      return r.setEditable(rectangle.editable);\n    });\n  }\n\n  setDraggable(rectangle: AgmRectangle): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      return r.setDraggable(rectangle.draggable);\n    });\n  }\n\n  setVisible(rectangle: AgmRectangle): Promise<void> {\n    return this._rectangles.get(rectangle).then((r) => {\n      return r.setVisible(rectangle.visible);\n    });\n  }\n\n  createEventObservable<T>(eventName: string, rectangle: AgmRectangle): Observable<T> {\n    return new Observable((subsrciber: Subscriber<T>) => {\n      let listener: google.maps.MapsEventListener = null;\n      this._rectangles.get(rectangle).then((r) => {\n        listener = r.addListener(eventName, (e: T) => this._zone.run(() => subsrciber.next(e)));\n      });\n\n      return () => {\n        if (listener !== null) {\n          listener.remove();\n        }\n      };\n    });\n  }\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { LayerManager } from '../services/managers/layer-manager';\n\nlet layerId = 0;\n\n/*\n * This directive adds a bicycling layer to a google map instance\n * <agm-bicycling-layer [visible]=\"true|false\"> <agm-bicycling-layer>\n * */\n@Directive({\n    selector: 'agm-bicycling-layer',\n})\nexport class AgmBicyclingLayer implements OnInit, OnDestroy{\n    private _addedToManager = false;\n    private _id: string = (layerId++).toString();\n\n    /**\n     * Hide/show bicycling layer\n     */\n    @Input() visible = true;\n\n    constructor( private _manager: LayerManager ) {}\n\n    ngOnInit() {\n        if (this._addedToManager) {\n            return;\n        }\n        this._manager.addBicyclingLayer(this);\n        this._addedToManager = true;\n    }\n\n    /** @internal */\n    id(): string { return this._id; }\n\n    /** @internal */\n    toString(): string { return `AgmBicyclingLayer-${this._id.toString()}`; }\n\n    /** @internal */\n    ngOnDestroy() {\n        this._manager.deleteLayer(this);\n    }\n\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CircleManager } from '../services/managers/circle-manager';\n\n@Directive({\n  selector: 'agm-circle',\n})\nexport class AgmCircle implements OnInit, OnChanges, OnDestroy {\n  /**\n   * The latitude position of the circle (required).\n   */\n  @Input() latitude: number;\n\n  /**\n   * The clickable position of the circle (required).\n   */\n  @Input() longitude: number;\n\n  /**\n   * Indicates whether this Circle handles mouse events. Defaults to true.\n   */\n  @Input() clickable = true;\n\n  /**\n   * If set to true, the user can drag this circle over the map. Defaults to false.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('circleDraggable') draggable = false;\n\n  /**\n   * If set to true, the user can edit this circle by dragging the control points shown at\n   * the center and around the circumference of the circle. Defaults to false.\n   */\n  @Input() editable = false;\n\n  /**\n   * The fill color. All CSS3 colors are supported except for extended named colors.\n   */\n  @Input() fillColor: string;\n\n  /**\n   * The fill opacity between 0.0 and 1.0.\n   */\n  @Input() fillOpacity: number;\n\n  /**\n   * The radius in meters on the Earth's surface.\n   */\n  @Input() radius = 0;\n\n  /**\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\n   */\n  @Input() strokeColor: string;\n\n  /**\n   * The stroke opacity between 0.0 and 1.0\n   */\n  @Input() strokeOpacity: number;\n\n  /**\n   * The stroke position. Defaults to CENTER.\n   * This property is not supported on Internet Explorer 8 and earlier.\n   */\n  @Input() strokePosition: keyof typeof google.maps.StrokePosition = 'CENTER';\n\n  /**\n   * The stroke width in pixels.\n   */\n  @Input() strokeWeight = 0;\n\n  /**\n   * Whether this circle is visible on the map. Defaults to true.\n   */\n  @Input() visible = true;\n\n  /**\n   * The zIndex compared to other polys.\n   */\n  @Input() zIndex: number;\n\n  /**\n   * This event is fired when the circle's center is changed.\n   */\n  @Output() centerChange: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\n\n  /**\n   * This event emitter gets emitted when the user clicks on the circle.\n   */\n  @Output() circleClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event emitter gets emitted when the user clicks on the circle.\n   */\n  @Output() circleDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is repeatedly fired while the user drags the circle.\n   */\n  // tslint:disable-next-line: no-output-native\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user stops dragging the circle.\n   */\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user starts dragging the circle.\n   */\n  @Output() dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousedown event is fired on the circle.\n   */\n  @Output() mouseDown: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousemove event is fired on the circle.\n   */\n  @Output() mouseMove: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired on circle mouseout.\n   */\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired on circle mouseover.\n   */\n  @Output() mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mouseup event is fired on the circle.\n   */\n  @Output() mouseUp: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the circle's radius is changed.\n   */\n  @Output() radiusChange: EventEmitter<number> = new EventEmitter<number>();\n\n  /**\n   * This event is fired when the circle is right-clicked on.\n   */\n  @Output() rightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  private _circleAddedToManager = false;\n\n  private static _mapOptions: string[] = [\n    'fillColor', 'fillOpacity', 'strokeColor', 'strokeOpacity', 'strokePosition', 'strokeWeight',\n    'visible', 'zIndex', 'clickable',\n  ];\n\n  private _eventSubscriptions: Subscription[] = [];\n\n  constructor(private _manager: CircleManager) {}\n\n  /** @internal */\n  ngOnInit() {\n    this._manager.addCircle(this);\n    this._circleAddedToManager = true;\n    this._registerEventListeners();\n  }\n\n  /** @internal */\n  ngOnChanges(changes: {[key: string]: SimpleChange}) {\n    if (!this._circleAddedToManager) {\n      return;\n    }\n    // tslint:disable: no-string-literal\n    if (changes['latitude'] || changes['longitude']) {\n      this._manager.setCenter(this);\n    }\n    if (changes['editable']) {\n      this._manager.setEditable(this);\n    }\n    if (changes['draggable']) {\n      this._manager.setDraggable(this);\n    }\n    if (changes['visible']) {\n      this._manager.setVisible(this);\n    }\n    if (changes['radius']) {\n      this._manager.setRadius(this);\n    }\n    // tslint:enable: no-string-literal\n    this._updateCircleOptionsChanges(changes);\n  }\n\n  private _updateCircleOptionsChanges(changes: {[propName: string]: SimpleChange}) {\n    const options: {[propName: string]: any} = {};\n    const optionKeys =\n        Object.keys(changes).filter(k => AgmCircle._mapOptions.indexOf(k) !== -1);\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n\n    if (optionKeys.length > 0) {\n      this._manager.setOptions(this, options);\n    }\n  }\n\n  private _registerEventListeners() {\n    const events: Map<string, EventEmitter<any>> = new Map<string, EventEmitter<any>>();\n    events.set('center_changed', this.centerChange);\n    events.set('click', this.circleClick);\n    events.set('dblclick', this.circleDblClick);\n    events.set('drag', this.drag);\n    events.set('dragend', this.dragEnd);\n    events.set('dragstart', this.dragStart);\n    events.set('mousedown', this.mouseDown);\n    events.set('mousemove', this.mouseMove);\n    events.set('mouseout', this.mouseOut);\n    events.set('mouseover', this.mouseOver);\n    events.set('mouseup', this.mouseUp);\n    events.set('radius_changed', this.radiusChange);\n    events.set('rightclick', this.rightClick);\n\n    events.forEach((eventEmitter, eventName) => {\n      this._eventSubscriptions.push(\n          this._manager.createEventObservable<google.maps.MouseEvent>(eventName, this).subscribe((value) => {\n            switch (eventName) {\n              case 'radius_changed':\n                this._manager.getRadius(this).then((radius) => eventEmitter.emit(radius));\n                break;\n              case 'center_changed':\n                this._manager.getCenter(this).then(\n                    (center) =>\n                        eventEmitter.emit({lat: center.lat(), lng: center.lng()} as google.maps.LatLngLiteral));\n                break;\n              default:\n                eventEmitter.emit(value);\n            }\n          }));\n    });\n  }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._eventSubscriptions.forEach(s => s.unsubscribe());\n    this._eventSubscriptions = null;\n    this._manager.removeCircle(this);\n  }\n\n  /**\n   * Gets the LatLngBounds of this Circle.\n   */\n  getBounds(): Promise<google.maps.LatLngBounds> { return this._manager.getBounds(this); }\n\n  getCenter(): Promise<google.maps.LatLng> { return this._manager.getCenter(this); }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\n\nlet layerId = 0;\n\n/**\n * AgmDataLayer enables the user to add data layers to the map.\n *\n * ### Example\n * ```typescript\n * import { Component } from 'angular2/core';\n * import { AgmMap, AgmDataLayer } from\n * 'angular-google-maps/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  directives: [AgmMap, AgmDataLayer],\n *  styles: [`\n *    .agm-container {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * \t  <agm-data-layer [geoJson]=\"geoJsonObject\" (layerClick)=\"clicked($event)\" [style]=\"styleFunc\">\n * \t  </agm-data-layer>\n * </agm-map>\n *  `\n * })\n * export class MyMapCmp {\n *   lat: number = -25.274449;\n *   lng: number = 133.775060;\n *   zoom: number = 5;\n *\n * clicked(clickEvent) {\n *    console.log(clickEvent);\n *  }\n *\n *  styleFunc(feature) {\n *    return ({\n *      clickable: false,\n *      fillColor: feature.getProperty('color'),\n *      strokeWeight: 1\n *    });\n *  }\n *\n *  geoJsonObject: Object = {\n *    \"type\": \"FeatureCollection\",\n *    \"features\": [\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"G\",\n *          \"color\": \"blue\",\n *          \"rank\": \"7\",\n *          \"ascii\": \"71\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],\n *              [118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],\n *              [121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],\n *              [124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],\n *              [121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], [123.35, -28.18],\n *              [122.51, -28.38], [121.77, -28.26], [121.02, -27.91], [120.49, -27.21], [120.14, -26.50],\n *              [120.10, -25.64], [120.27, -24.52], [120.67, -23.68], [121.72, -23.32], [122.43, -23.48],\n *              [123.04, -24.04], [124.54, -24.28], [124.58, -23.20], [123.61, -22.14]\n *            ]\n *          ]\n *        }\n *      },\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"o\",\n *          \"color\": \"red\",\n *          \"rank\": \"15\",\n *          \"ascii\": \"111\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [128.84, -25.76], [128.18, -25.60], [127.96, -25.52], [127.88, -25.52], [127.70, -25.60],\n *              [127.26, -25.79], [126.60, -26.11], [126.16, -26.78], [126.12, -27.68], [126.21, -28.42],\n *              [126.69, -29.49], [127.74, -29.80], [128.80, -29.72], [129.41, -29.03], [129.72, -27.95],\n *              [129.68, -27.21], [129.33, -26.23], [128.84, -25.76]\n *            ],\n *            [\n *              [128.45, -27.44], [128.32, -26.94], [127.70, -26.82], [127.35, -27.05], [127.17, -27.80],\n *              [127.57, -28.22], [128.10, -28.42], [128.49, -27.80], [128.45, -27.44]\n *            ]\n *          ]\n *        }\n *      },\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"o\",\n *          \"color\": \"yellow\",\n *          \"rank\": \"15\",\n *          \"ascii\": \"111\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [131.87, -25.76], [131.35, -26.07], [130.95, -26.78], [130.82, -27.64], [130.86, -28.53],\n *              [131.26, -29.22], [131.92, -29.76], [132.45, -29.87], [133.06, -29.76], [133.72, -29.34],\n *              [134.07, -28.80], [134.20, -27.91], [134.07, -27.21], [133.81, -26.31], [133.37, -25.83],\n *              [132.71, -25.64], [131.87, -25.76]\n *            ],\n *            [\n *              [133.15, -27.17], [132.71, -26.86], [132.09, -26.90], [131.74, -27.56], [131.79, -28.26],\n *              [132.36, -28.45], [132.93, -28.34], [133.15, -27.76], [133.15, -27.17]\n *            ]\n *          ]\n *        }\n *      },\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"g\",\n *          \"color\": \"blue\",\n *          \"rank\": \"7\",\n *          \"ascii\": \"103\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [138.12, -25.04], [136.84, -25.16], [135.96, -25.36], [135.26, -25.99], [135, -26.90],\n *              [135.04, -27.91], [135.26, -28.88], [136.05, -29.45], [137.02, -29.49], [137.81, -29.49],\n *              [137.94, -29.99], [137.90, -31.20], [137.85, -32.24], [136.88, -32.69], [136.45, -32.36],\n *              [136.27, -31.80], [134.95, -31.84], [135.17, -32.99], [135.52, -33.43], [136.14, -33.76],\n *              [137.06, -33.83], [138.12, -33.65], [138.86, -33.21], [139.30, -32.28], [139.30, -31.24],\n *              [139.30, -30.14], [139.21, -28.96], [139.17, -28.22], [139.08, -27.41], [139.08, -26.47],\n *              [138.99, -25.40], [138.73, -25.00], [138.12, -25.04]\n *            ],\n *            [\n *              [137.50, -26.54], [136.97, -26.47], [136.49, -26.58], [136.31, -27.13], [136.31, -27.72],\n *              [136.58, -27.99], [137.50, -28.03], [137.68, -27.68], [137.59, -26.78], [137.50, -26.54]\n *            ]\n *          ]\n *        }\n *      },\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"l\",\n *          \"color\": \"green\",\n *          \"rank\": \"12\",\n *          \"ascii\": \"108\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [140.14, -21.04], [140.31, -29.42], [141.67, -29.49], [141.59, -20.92], [140.14, -21.04]\n *            ]\n *          ]\n *        }\n *      },\n *      {\n *        \"type\": \"Feature\",\n *        \"properties\": {\n *          \"letter\": \"e\",\n *          \"color\": \"red\",\n *          \"rank\": \"5\",\n *          \"ascii\": \"101\"\n *        },\n *        \"geometry\": {\n *          \"type\": \"Polygon\",\n *          \"coordinates\": [\n *            [\n *              [144.14, -27.41], [145.67, -27.52], [146.86, -27.09], [146.82, -25.64], [146.25, -25.04],\n *              [145.45, -24.68], [144.66, -24.60], [144.09, -24.76], [143.43, -25.08], [142.99, -25.40],\n *              [142.64, -26.03], [142.64, -27.05], [142.64, -28.26], [143.30, -29.11], [144.18, -29.57],\n *              [145.41, -29.64], [146.46, -29.19], [146.64, -28.72], [146.82, -28.14], [144.84, -28.42],\n *              [144.31, -28.26], [144.14, -27.41]\n *            ],\n *            [\n *              [144.18, -26.39], [144.53, -26.58], [145.19, -26.62], [145.72, -26.35], [145.81, -25.91],\n *              [145.41, -25.68], [144.97, -25.68], [144.49, -25.64], [144, -25.99], [144.18, -26.39]\n *            ]\n *          ]\n *        }\n *      }\n *    ]\n *  };\n * }\n * ```\n */\n@Directive({\n  selector: 'agm-data-layer',\n})\nexport class AgmDataLayer implements OnInit, OnDestroy, OnChanges {\n  private static _dataOptionsAttributes = ['style'];\n\n  private _addedToManager = false;\n  private _id: string = (layerId++).toString();\n  private _subscriptions: Subscription[] = [];\n\n  /**\n   * This event is fired when a feature in the layer is clicked.\n   */\n  @Output() layerClick: EventEmitter<google.maps.Data.MouseEvent> = new EventEmitter<google.maps.Data.MouseEvent>();\n\n  /**\n   * The geoJson to be displayed\n   */\n  @Input() geoJson: object | string | null = null;\n\n  /**\n   * The layer's style function.\n   */\n  @Input() style: (param: google.maps.Data.Feature) => google.maps.Data.StyleOptions;\n\n  constructor(private _manager: DataLayerManager) { }\n\n  ngOnInit() {\n    if (this._addedToManager) {\n      return;\n    }\n    this._manager.addDataLayer(this);\n    this._addedToManager = true;\n    this._addEventListeners();\n  }\n\n  private _addEventListeners() {\n    const listeners = [\n      { name: 'click', handler: (ev: google.maps.Data.MouseEvent) => this.layerClick.emit(ev) },\n    ];\n    listeners.forEach((obj) => {\n      const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\n      this._subscriptions.push(os);\n    });\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  toString(): string { return `AgmDataLayer-${this._id.toString()}`; }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._manager.deleteDataLayer(this);\n    // unsubscribe all registered observable subscriptions\n    this._subscriptions.forEach(s => s.unsubscribe());\n  }\n\n  /** @internal */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this._addedToManager) {\n      return;\n    }\n\n    // tslint:disable-next-line: no-string-literal\n    const geoJsonChange = changes['geoJson'];\n    if (geoJsonChange) {\n      this._manager.updateGeoJson(this, geoJsonChange.currentValue);\n    }\n\n    const dataOptions = AgmDataLayer._dataOptionsAttributes.reduce<google.maps.Data.DataOptions>((options, k) =>\n      options[k] = changes.hasOwnProperty(k) ? changes[k].currentValue : (this as any)[k], {});\n\n    this._manager.setDataOptions(this, dataOptions);\n  }\n}\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, Self } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { FitBoundsAccessor, FitBoundsDetails, FitBoundsService } from '../services/fit-bounds';\n\n/**\n * Adds the given directive to the auto fit bounds feature when the value is true.\n * To make it work with you custom AGM component, you also have to implement the {@link FitBoundsAccessor} abstract class.\n * @example\n * <agm-marker [agmFitBounds]=\"true\"></agm-marker>\n */\n@Directive({\n  selector: '[agmFitBounds]',\n})\nexport class AgmFitBounds implements OnInit, OnDestroy, OnChanges {\n  /**\n   * If the value is true, the element gets added to the bounds of the map.\n   * Default: true.\n   */\n  @Input() agmFitBounds = true;\n\n  private _destroyed$: Subject<void> = new Subject<void>();\n  private _latestFitBoundsDetails: FitBoundsDetails | null = null;\n\n  constructor(\n    @Self() private readonly _fitBoundsAccessor: FitBoundsAccessor,\n    private readonly _fitBoundsService: FitBoundsService,\n  ) {}\n\n  /**\n   * @internal\n   */\n  ngOnChanges() {\n    this._updateBounds();\n  }\n\n  /**\n   * @internal\n   */\n  ngOnInit() {\n    this._fitBoundsAccessor\n      .getFitBoundsDetails$()\n      .pipe(\n        distinctUntilChanged(\n          (x: FitBoundsDetails, y: FitBoundsDetails) =>\n            x.latLng.lat === y.latLng.lat && x.latLng.lng === y.latLng.lng,\n        ),\n        takeUntil(this._destroyed$),\n      )\n      .subscribe(details => this._updateBounds(details));\n  }\n\n  /*\n   Either the location changed, or visible status changed.\n   Possible state changes are\n   invisible -> visible\n   visible -> invisible\n   visible -> visible (new location)\n  */\n  private _updateBounds(newFitBoundsDetails?: FitBoundsDetails) {\n    // either visibility will change, or location, so remove the old one anyway\n    if (this._latestFitBoundsDetails) {\n      this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\n      // don't set latestFitBoundsDetails to null, because we can toggle visibility from\n      // true -> false -> true, in which case we still need old value cached here\n    }\n\n    if (newFitBoundsDetails) {\n      this._latestFitBoundsDetails = newFitBoundsDetails;\n    }\n    if (!this._latestFitBoundsDetails) {\n      return;\n    }\n    if (this.agmFitBounds === true) {\n      this._fitBoundsService.addToBounds(this._latestFitBoundsDetails.latLng);\n    }\n  }\n\n  /**\n   * @internal\n   */\n  ngOnDestroy() {\n    this._destroyed$.next();\n    this._destroyed$.complete();\n    if (this._latestFitBoundsDetails !== null) {\n      this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\n    }\n  }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\n\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\n\nimport { AgmMarker } from './marker';\n\nlet infoWindowId = 0;\n\n/**\n * AgmInfoWindow renders a info window inside a {@link AgmMarker} or standalone.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  styles: [`\n *    .agm-map-container {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *      <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n *        <agm-info-window [disableAutoPan]=\"true\">\n *          Hi, this is the content of the <strong>info window</strong>\n *        </agm-info-window>\n *      </agm-marker>\n *    </agm-map>\n *  `\n * })\n * ```\n */\n@Component({\n  selector: 'agm-info-window',\n  template: `<div class='agm-info-window-content'>\n      <ng-content></ng-content>\n    </div>\n  `,\n})\nexport class AgmInfoWindow implements OnDestroy, OnChanges, OnInit {\n  /**\n   * The latitude position of the info window (only usefull if you use it ouside of a {@link\n   * AgmMarker}).\n   */\n  @Input() latitude: number;\n\n  /**\n   * The longitude position of the info window (only usefull if you use it ouside of a {@link\n   * AgmMarker}).\n   */\n  @Input() longitude: number;\n\n  /**\n   * Disable auto-pan on open. By default, the info window will pan the map so that it is fully\n   * visible when it opens.\n   */\n  @Input() disableAutoPan: boolean;\n\n  /**\n   * All InfoWindows are displayed on the map in order of their zIndex, with higher values\n   * displaying in front of InfoWindows with lower values. By default, InfoWindows are displayed\n   * according to their latitude, with InfoWindows of lower latitudes appearing in front of\n   * InfoWindows at higher latitudes. InfoWindows are always displayed in front of markers.\n   */\n  @Input() zIndex: number;\n\n  /**\n   * Maximum width of the infowindow, regardless of content's width. This value is only considered\n   * if it is set before a call to open. To change the maximum width when changing content, call\n   * close, update maxWidth, and then open.\n   */\n  @Input() maxWidth: number;\n\n  /**\n   * Holds the marker that is the host of the info window (if available)\n   */\n  hostMarker: AgmMarker;\n\n  /**\n   * Holds the native element that is used for the info window content.\n   */\n  content: Node;\n\n  /**\n   * Sets the open state for the InfoWindow. You can also call the open() and close() methods.\n   */\n  @Input() isOpen = false;\n\n  /**\n   * Emits an event when the info window is closed.\n   */\n  @Output() infoWindowClose: EventEmitter<void> = new EventEmitter<void>();\n\n  private static _infoWindowOptionsInputs: string[] = ['disableAutoPan', 'maxWidth'];\n  private _infoWindowAddedToManager = false;\n  private _id: string = (infoWindowId++).toString();\n\n  constructor(private _infoWindowManager: InfoWindowManager, private _el: ElementRef) {}\n\n  ngOnInit() {\n    this.content = this._el.nativeElement.querySelector('.agm-info-window-content');\n    this._infoWindowManager.addInfoWindow(this);\n    this._infoWindowAddedToManager = true;\n    this._updateOpenState();\n    this._registerEventListeners();\n  }\n\n  /** @internal */\n  ngOnChanges(changes: {[key: string]: SimpleChange}) {\n    if (!this._infoWindowAddedToManager) {\n      return;\n    }\n    // tslint:disable: no-string-literal\n    if ((changes['latitude'] || changes['longitude']) && typeof this.latitude === 'number' &&\n        typeof this.longitude === 'number') {\n      this._infoWindowManager.setPosition(this);\n    }\n    if (changes['zIndex']) {\n      this._infoWindowManager.setZIndex(this);\n    }\n    if (changes['isOpen']) {\n      this._updateOpenState();\n    }\n    this._setInfoWindowOptions(changes);\n  }\n  // tslint:enable: no-string-literal\n\n  private _registerEventListeners() {\n    this._infoWindowManager.createEventObservable('closeclick', this).subscribe(() => {\n      this.isOpen = false;\n      this.infoWindowClose.emit();\n    });\n  }\n\n  private _updateOpenState() {\n    this.isOpen ? this.open() : this.close();\n  }\n\n  private _setInfoWindowOptions(changes: {[key: string]: SimpleChange}) {\n    const options: {[propName: string]: any} = {};\n    const optionKeys = Object.keys(changes).filter(\n        k => AgmInfoWindow._infoWindowOptionsInputs.indexOf(k) !== -1);\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n    this._infoWindowManager.setOptions(this, options);\n  }\n\n  /**\n   * Opens the info window.\n   */\n  open(): Promise<void> { return this._infoWindowManager.open(this); }\n\n  /**\n   * Closes the info window.\n   */\n  close(): Promise<void> {\n    return this._infoWindowManager.close(this).then(() => { this.infoWindowClose.emit(); });\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  toString(): string { return 'AgmInfoWindow-' + this._id.toString(); }\n\n  /** @internal */\n  ngOnDestroy() { this._infoWindowManager.deleteInfoWindow(this); }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\n\nlet layerId = 0;\n\n@Directive({\n  selector: 'agm-kml-layer',\n})\nexport class AgmKmlLayer implements OnInit, OnDestroy, OnChanges {\n  private _addedToManager = false;\n  private _id: string = (layerId++).toString();\n  private _subscriptions: Subscription[] = [];\n  private static _kmlLayerOptions: string[] =\n      ['clickable', 'preserveViewport', 'screenOverlays', 'suppressInfoWindows', 'url', 'zIndex'];\n\n  /**\n   * If true, the layer receives mouse events. Default value is true.\n   */\n  @Input() clickable = true;\n\n  /**\n   * By default, the input map is centered and zoomed to the bounding box of the contents of the\n   * layer.\n   * If this option is set to true, the viewport is left unchanged, unless the map's center and zoom\n   * were never set.\n   */\n  @Input() preserveViewport = false;\n\n  /**\n   * Whether to render the screen overlays. Default true.\n   */\n  @Input() screenOverlays = true;\n\n  /**\n   * Suppress the rendering of info windows when layer features are clicked.\n   */\n  @Input() suppressInfoWindows = false;\n\n  /**\n   * The URL of the KML document to display.\n   */\n  @Input() url: string = null;\n\n  /**\n   * The z-index of the layer.\n   */\n  @Input() zIndex: number | null = null;\n\n  /**\n   * This event is fired when a feature in the layer is clicked.\n   */\n  @Output() layerClick: EventEmitter<google.maps.KmlMouseEvent> = new EventEmitter<google.maps.KmlMouseEvent>();\n\n  /**\n   * This event is fired when the KML layers default viewport has changed.\n   */\n  @Output() defaultViewportChange: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * This event is fired when the KML layer has finished loading.\n   * At this point it is safe to read the status property to determine if the layer loaded\n   * successfully.\n   */\n  @Output() statusChange: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(private _manager: KmlLayerManager) {}\n\n  ngOnInit() {\n    if (this._addedToManager) {\n      return;\n    }\n    this._manager.addKmlLayer(this);\n    this._addedToManager = true;\n    this._addEventListeners();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this._addedToManager) {\n      return;\n    }\n    this._updatePolygonOptions(changes);\n  }\n\n  private _updatePolygonOptions(changes: SimpleChanges) {\n    const options = Object.keys(changes)\n                        .filter(k => AgmKmlLayer._kmlLayerOptions.indexOf(k) !== -1)\n                        .reduce((obj: any, k: string) => {\n                          obj[k] = changes[k].currentValue;\n                          return obj;\n                        }, {});\n    if (Object.keys(options).length > 0) {\n      this._manager.setOptions(this, options);\n    }\n  }\n\n  private _addEventListeners() {\n    const listeners = [\n      {name: 'click', handler: (ev: google.maps.KmlMouseEvent) => this.layerClick.emit(ev)},\n      {name: 'defaultviewport_changed', handler: () => this.defaultViewportChange.emit()},\n      {name: 'status_changed', handler: () => this.statusChange.emit()},\n    ];\n    listeners.forEach((obj) => {\n      const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\n      this._subscriptions.push(os);\n    });\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  toString(): string { return `AgmKmlLayer-${this._id.toString()}`; }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._manager.deleteKmlLayer(this);\n    // unsubscribe all registered observable subscriptions\n    this._subscriptions.forEach(s => s.unsubscribe());\n  }\n}\n","import { isPlatformServer } from '@angular/common';\nimport { AfterContentInit, Component, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgZone, OnChanges, OnDestroy, Output, PLATFORM_ID, QueryList, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FitBoundsService } from '../services/fit-bounds';\nimport { GoogleMapsAPIWrapper } from '../services/google-maps-api-wrapper';\nimport { CircleManager } from '../services/managers/circle-manager';\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\nimport { LayerManager } from '../services/managers/layer-manager';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { PolygonManager } from '../services/managers/polygon-manager';\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { RectangleManager } from '../services/managers/rectangle-manager';\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\n\nexport type ControlPosition = keyof typeof google.maps.ControlPosition;\n\n@Directive()\nexport abstract class AgmMapControl {\n  @Input() position: ControlPosition;\n  abstract getOptions(): Partial<google.maps.MapOptions>;\n}\n\n@Directive({\n  selector: 'agm-map agm-fullscreen-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmFullscreenControl }],\n})\nexport class AgmFullscreenControl extends AgmMapControl {\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      fullscreenControl: true,\n      fullscreenControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n      },\n    };\n  }\n}\n@Directive({\n  selector: 'agm-map agm-map-type-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmMapTypeControl }],\n})\nexport class AgmMapTypeControl extends AgmMapControl {\n  @Input() mapTypeIds: (keyof typeof google.maps.MapTypeId)[];\n  @Input() style: keyof typeof google.maps.MapTypeControlStyle;\n\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      mapTypeControl: true,\n      mapTypeControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n        style: this.style && google.maps.MapTypeControlStyle[this.style],\n        mapTypeIds: this.mapTypeIds && this.mapTypeIds.map(mapTypeId => google.maps.MapTypeId[mapTypeId]),\n      },\n    };\n  }\n}\n\n@Directive({\n  selector: 'agm-map agm-pan-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmPanControl }],\n})\nexport class AgmPanControl extends AgmMapControl {\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      panControl: true,\n      panControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n      },\n    };\n  }\n}\n\n@Directive({\n  selector: 'agm-map agm-rotate-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmRotateControl }],\n})\nexport class AgmRotateControl extends AgmMapControl {\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      rotateControl: true,\n      rotateControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n      },\n    };\n  }\n}\n\n@Directive({\n  selector: 'agm-map agm-scale-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmScaleControl }],\n})\nexport class AgmScaleControl extends AgmMapControl{\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      scaleControl: true,\n    };\n  }\n}\n\n@Directive({\n  selector: 'agm-map agm-street-view-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmStreetViewControl }],\n})\nexport class AgmStreetViewControl extends AgmMapControl {\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      streetViewControl: true,\n      streetViewControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n      },\n    };\n  }\n}\n\n@Directive({\n  selector: 'agm-map agm-zoom-control',\n  providers: [{ provide: AgmMapControl, useExisting: AgmZoomControl }],\n})\nexport class AgmZoomControl extends AgmMapControl{\n  @Input() style: keyof typeof google.maps.ZoomControlStyle;\n  getOptions(): Partial<google.maps.MapOptions> {\n    return {\n      zoomControl: true,\n      zoomControlOptions: {\n        position: this.position && google.maps.ControlPosition[this.position],\n        style: this.style && google.maps.ZoomControlStyle[this.style],\n      },\n    };\n  }\n}\n\n/**\n * AgmMap renders a Google Map.\n * **Important note**: To be able see a map in the browser, you have to define a height for the\n * element `agm-map`.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  styles: [`\n *    agm-map {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *    </agm-map>\n *  `\n * })\n * ```\n */\n@Component({\n  selector: 'agm-map',\n  providers: [\n    CircleManager,\n    DataLayerManager,\n    DataLayerManager,\n    FitBoundsService,\n    GoogleMapsAPIWrapper,\n    InfoWindowManager,\n    KmlLayerManager,\n    LayerManager,\n    MarkerManager,\n    PolygonManager,\n    PolylineManager,\n    RectangleManager,\n  ],\n  styles: [`\n    .agm-map-container-inner {\n      width: inherit;\n      height: inherit;\n    }\n    .agm-map-content {\n      display:none;\n    }\n  `],\n  template: `\n              <div class='agm-map-container-inner sebm-google-map-container-inner'></div>\n              <div class='agm-map-content'>\n                <ng-content></ng-content>\n              </div>\n  `,\n})\nexport class AgmMap implements OnChanges, AfterContentInit, OnDestroy {\n  /**\n   * The longitude that defines the center of the map.\n   */\n  @Input() longitude = 0;\n\n  /**\n   * The latitude that defines the center of the map.\n   */\n  @Input() latitude = 0;\n\n  /**\n   * The zoom level of the map. The default zoom level is 8.\n   */\n  @Input() zoom = 8;\n\n  /**\n   * The minimal zoom level of the map allowed. When not provided, no restrictions to the zoom level\n   * are enforced.\n   */\n  @Input() minZoom: number;\n\n  /**\n   * The maximal zoom level of the map allowed. When not provided, no restrictions to the zoom level\n   * are enforced.\n   */\n  @Input() maxZoom: number;\n\n  /**\n   * The control size for the default map controls. Only governs the controls made by the Maps API itself\n   */\n  @Input() controlSize: number;\n\n  /**\n   * Enables/disables if map is draggable.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('mapDraggable') draggable = true;\n\n  /**\n   * Enables/disables zoom and center on double click. Enabled by default.\n   */\n  @Input() disableDoubleClickZoom = false;\n\n  /**\n   * Enables/disables all default UI of the Google map. Please note: When the map is created, this\n   * value cannot get updated.\n   */\n  @Input() disableDefaultUI = false;\n\n  /**\n   * If false, disables scrollwheel zooming on the map. The scrollwheel is enabled by default.\n   */\n  @Input() scrollwheel = true;\n\n  /**\n   * Color used for the background of the Map div. This color will be visible when tiles have not\n   * yet loaded as the user pans. This option can only be set when the map is initialized.\n   */\n  @Input() backgroundColor: string;\n\n  /**\n   * The name or url of the cursor to display when mousing over a draggable map. This property uses\n   * the css  * cursor attribute to change the icon. As with the css property, you must specify at\n   * least one fallback cursor that is not a URL. For example:\n   * [draggableCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\n   */\n  @Input() draggableCursor: string;\n\n  /**\n   * The name or url of the cursor to display when the map is being dragged. This property uses the\n   * css cursor attribute to change the icon. As with the css property, you must specify at least\n   * one fallback cursor that is not a URL. For example:\n   * [draggingCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\n   */\n  @Input() draggingCursor: string;\n\n  /**\n   * If false, prevents the map from being controlled by the keyboard. Keyboard shortcuts are\n   * enabled by default.\n   */\n  @Input() keyboardShortcuts = true;\n\n  /**\n   * Styles to apply to each of the default map types. Note that for Satellite/Hybrid and Terrain\n   * modes, these styles will only apply to labels and geometry.\n   */\n  @Input() styles: google.maps.MapTypeStyle[] = [];\n\n  /**\n   * When true and the latitude and/or longitude values changes, the Google Maps panTo method is\n   * used to\n   * center the map. See: https://developers.google.com/maps/documentation/javascript/reference#Map\n   */\n  @Input() usePanning = false;\n\n  /**\n   * Sets the viewport to contain the given bounds.\n   * If this option to `true`, the bounds get automatically computed from all elements that use the {@link AgmFitBounds} directive.\n   */\n  @Input() fitBounds: google.maps.LatLngBoundsLiteral | google.maps.LatLngBounds | boolean = false;\n\n  /**\n   * Padding amount for the bounds.\n   */\n  @Input() fitBoundsPadding: number | google.maps.Padding;\n\n  /**\n   * The map mapTypeId. Defaults to 'roadmap'.\n   */\n  @Input() mapTypeId: keyof typeof google.maps.MapTypeId = 'ROADMAP';\n\n  /**\n   * When false, map icons are not clickable. A map icon represents a point of interest,\n   * also known as a POI. By default map icons are clickable.\n   */\n  @Input() clickableIcons = true;\n\n  /**\n   * A map icon represents a point of interest, also known as a POI.\n   * When map icons are clickable by default, an info window is displayed.\n   * When this property is set to false, the info window will not be shown but the click event\n   * will still fire\n   */\n  @Input() showDefaultInfoWindow = true;\n\n  /**\n   * This setting controls how gestures on the map are handled.\n   * Allowed values:\n   * - 'cooperative' (Two-finger touch gestures pan and zoom the map. One-finger touch gestures are not handled by the map.)\n   * - 'greedy'      (All touch gestures pan or zoom the map.)\n   * - 'none'        (The map cannot be panned or zoomed by user gestures.)\n   * - 'auto'        [default] (Gesture handling is either cooperative or greedy, depending on whether the page is scrollable or not.\n   */\n  @Input() gestureHandling: google.maps.GestureHandlingOptions = 'auto';\n\n    /**\n     * Controls the automatic switching behavior for the angle of incidence of\n     * the map. The only allowed values are 0 and 45. The value 0 causes the map\n     * to always use a 0° overhead view regardless of the zoom level and\n     * viewport. The value 45 causes the tilt angle to automatically switch to\n     * 45 whenever 45° imagery is available for the current zoom level and\n     * viewport, and switch back to 0 whenever 45° imagery is not available\n     * (this is the default behavior). 45° imagery is only available for\n     * satellite and hybrid map types, within some locations, and at some zoom\n     * levels. Note: getTilt returns the current tilt angle, not the value\n     * specified by this option. Because getTilt and this option refer to\n     * different things, do not bind() the tilt property; doing so may yield\n     * unpredictable effects. (Default of AGM is 0 (disabled). Enable it with value 45.)\n     */\n  @Input() tilt = 0;\n\n  /**\n   * Options for restricting the bounds of the map.\n   * User cannot pan or zoom away from restricted area.\n   */\n  @Input() restriction: google.maps.MapRestriction;\n\n  /**\n   * Map option attributes that can change over time\n   */\n  private static _mapOptionsAttributes: string[] = [\n    'disableDoubleClickZoom', 'scrollwheel', 'draggable', 'draggableCursor', 'draggingCursor',\n    'keyboardShortcuts', 'styles', 'zoom', 'minZoom', 'maxZoom', 'mapTypeId', 'clickableIcons',\n    'gestureHandling', 'tilt', 'restriction',\n  ];\n\n  private _observableSubscriptions: Subscription[] = [];\n  private _fitBoundsSubscription: Subscription;\n\n  /**\n   * This event emitter gets emitted when the user clicks on the map (but not when they click on a\n   * marker or infoWindow).\n   */\n  // tslint:disable-next-line: max-line-length\n  @Output() mapClick: EventEmitter<google.maps.MouseEvent | google.maps.IconMouseEvent> = new EventEmitter<google.maps.MouseEvent | google.maps.IconMouseEvent>();\n\n  /**\n   * This event emitter gets emitted when the user right-clicks on the map (but not when they click\n   * on a marker or infoWindow).\n   */\n  @Output() mapRightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event emitter gets emitted when the user double-clicks on the map (but not when they click\n   * on a marker or infoWindow).\n   */\n  @Output() mapDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event emitter is fired when the map center changes.\n   */\n  @Output() centerChange: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\n\n  /**\n   * This event is fired when the viewport bounds have changed.\n   */\n  @Output() boundsChange: EventEmitter<google.maps.LatLngBounds> = new EventEmitter<google.maps.LatLngBounds>();\n\n  /**\n   * This event is fired when the mapTypeId property changes.\n   */\n  @Output() mapTypeIdChange: EventEmitter<google.maps.MapTypeId> = new EventEmitter<google.maps.MapTypeId>();\n\n  /**\n   * This event is fired when the map becomes idle after panning or zooming.\n   */\n  @Output() idle: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * This event is fired when the zoom level has changed.\n   */\n  @Output() zoomChange: EventEmitter<number> = new EventEmitter<number>();\n\n  /**\n   * This event is fired when the google map is fully initialized.\n   * You get the google.maps.Map instance as a result of this EventEmitter.\n   */\n  @Output() mapReady: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * This event is fired when the visible tiles have finished loading.\n   */\n  @Output() tilesLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n  @ContentChildren(AgmMapControl) mapControls: QueryList<AgmMapControl>;\n\n  constructor(\n    private _elem: ElementRef,\n    private _mapsWrapper: GoogleMapsAPIWrapper,\n    // tslint:disable-next-line: ban-types\n    @Inject(PLATFORM_ID) private _platformId: Object,\n    protected _fitBoundsService: FitBoundsService,\n    private _zone: NgZone\n  ) {}\n\n  /** @internal */\n  ngAfterContentInit() {\n    if (isPlatformServer(this._platformId)) {\n      // The code is running on the server, do nothing\n      return;\n    }\n    // todo: this should be solved with a new component and a viewChild decorator\n    const container = this._elem.nativeElement.querySelector('.agm-map-container-inner');\n    this._initMapInstance(container);\n  }\n\n  private _initMapInstance(el: HTMLElement) {\n    this._mapsWrapper.createMap(el, {\n      center: {lat: this.latitude || 0, lng: this.longitude || 0},\n      zoom: this.zoom,\n      minZoom: this.minZoom,\n      maxZoom: this.maxZoom,\n      controlSize: this.controlSize,\n      disableDefaultUI: this.disableDefaultUI,\n      disableDoubleClickZoom: this.disableDoubleClickZoom,\n      scrollwheel: this.scrollwheel,\n      backgroundColor: this.backgroundColor,\n      draggable: this.draggable,\n      draggableCursor: this.draggableCursor,\n      draggingCursor: this.draggingCursor,\n      keyboardShortcuts: this.keyboardShortcuts,\n      styles: this.styles,\n      mapTypeId: this.mapTypeId.toLocaleLowerCase(),\n      clickableIcons: this.clickableIcons,\n      gestureHandling: this.gestureHandling,\n      tilt: this.tilt,\n      restriction: this.restriction,\n    })\n      .then(() => this._mapsWrapper.getNativeMap())\n      .then(map => this.mapReady.emit(map));\n\n    // register event listeners\n    this._handleMapCenterChange();\n    this._handleMapZoomChange();\n    this._handleMapMouseEvents();\n    this._handleBoundsChange();\n    this._handleMapTypeIdChange();\n    this._handleTilesLoadedEvent();\n    this._handleIdleEvent();\n    this._handleControlChange();\n  }\n\n  /** @internal */\n  ngOnDestroy() {\n    // unsubscribe all registered observable subscriptions\n    this._observableSubscriptions.forEach((s) => s.unsubscribe());\n\n    // remove all listeners from the map instance\n    this._mapsWrapper.clearInstanceListeners();\n    if (this._fitBoundsSubscription) {\n      this._fitBoundsSubscription.unsubscribe();\n    }\n  }\n\n  /* @internal */\n  ngOnChanges(changes: SimpleChanges) {\n    this._updateMapOptionsChanges(changes);\n    this._updatePosition(changes);\n  }\n\n  private _updateMapOptionsChanges(changes: SimpleChanges) {\n    const options: {[propName: string]: any} = {};\n    const optionKeys =\n      Object.keys(changes).filter(k => AgmMap._mapOptionsAttributes.indexOf(k) !== -1);\n    optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n    this._mapsWrapper.setMapOptions(options);\n  }\n\n  /**\n   * Triggers a resize event on the google map instance.\n   * When recenter is true, the of the google map gets called with the current lat/lng values or fitBounds value to recenter the map.\n   * Returns a promise that gets resolved after the event was triggered.\n   */\n  triggerResize(recenter: boolean = true): Promise<void> {\n    // Note: When we would trigger the resize event and show the map in the same turn (which is a\n    // common case for triggering a resize event), then the resize event would not\n    // work (to show the map), so we trigger the event in a timeout.\n    return new Promise<void>((resolve) => {\n      setTimeout(() => {\n        return this._mapsWrapper.triggerMapEvent('resize').then(() => {\n          if (recenter) {\n            this.fitBounds != null ? this._fitBounds() : this._setCenter();\n          }\n          resolve();\n        });\n      });\n    });\n  }\n\n  private _updatePosition(changes: SimpleChanges) {\n    // tslint:disable: no-string-literal\n    if (changes['latitude'] == null && changes['longitude'] == null &&\n        !changes['fitBounds']) {\n      // no position update needed\n      return;\n    }\n    // tslint:enable: no-string-literal\n\n    // we prefer fitBounds in changes\n    if ('fitBounds' in changes) {\n      this._fitBounds();\n      return;\n    }\n\n    if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n      return;\n    }\n    this._setCenter();\n  }\n\n  private _setCenter() {\n    const newCenter = {\n      lat: this.latitude,\n      lng: this.longitude,\n    };\n    if (this.usePanning) {\n      this._mapsWrapper.panTo(newCenter);\n    } else {\n      this._mapsWrapper.setCenter(newCenter);\n    }\n  }\n\n  private _fitBounds() {\n    switch (this.fitBounds) {\n      case true:\n        this._subscribeToFitBoundsUpdates();\n        break;\n      case false:\n        if (this._fitBoundsSubscription) {\n          this._fitBoundsSubscription.unsubscribe();\n        }\n        break;\n      default:\n        if (this._fitBoundsSubscription) {\n          this._fitBoundsSubscription.unsubscribe();\n        }\n        this._updateBounds(this.fitBounds, this.fitBoundsPadding);\n    }\n  }\n\n  private _subscribeToFitBoundsUpdates() {\n    this._zone.runOutsideAngular(() => {\n      this._fitBoundsSubscription = this._fitBoundsService.getBounds$().subscribe(b => {\n        this._zone.run(() => this._updateBounds(b, this.fitBoundsPadding));\n      });\n    });\n  }\n\n  protected _updateBounds(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral, padding?: number | google.maps.Padding) {\n    if (!bounds) {\n      return;\n    }\n    if (this._isLatLngBoundsLiteral(bounds) && typeof google !== 'undefined' && google && google.maps && google.maps.LatLngBounds) {\n      const newBounds = new google.maps.LatLngBounds();\n      newBounds.union(bounds);\n      bounds = newBounds;\n    }\n    if (this.usePanning) {\n      this._mapsWrapper.panToBounds(bounds, padding);\n      return;\n    }\n    this._mapsWrapper.fitBounds(bounds, padding);\n  }\n\n  private _isLatLngBoundsLiteral(bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral): boolean {\n    return bounds != null && (bounds as any).extend === undefined;\n  }\n\n  private _handleMapCenterChange() {\n    const s = this._mapsWrapper.subscribeToMapEvent('center_changed').subscribe(() => {\n      this._mapsWrapper.getCenter().then((center: google.maps.LatLng) => {\n        this.latitude = center.lat();\n        this.longitude = center.lng();\n        this.centerChange.emit({lat: this.latitude, lng: this.longitude} as google.maps.LatLngLiteral);\n      });\n    });\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleBoundsChange() {\n    const s = this._mapsWrapper.subscribeToMapEvent('bounds_changed').subscribe(() => {\n      this._mapsWrapper.getBounds().then(\n        (bounds: google.maps.LatLngBounds) => { this.boundsChange.emit(bounds); });\n    });\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleMapTypeIdChange() {\n    const s = this._mapsWrapper.subscribeToMapEvent('maptypeid_changed').subscribe(() => {\n      this._mapsWrapper.getMapTypeId().then(\n        (mapTypeId: google.maps.MapTypeId) => { this.mapTypeIdChange.emit(mapTypeId); });\n    });\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleMapZoomChange() {\n    const s = this._mapsWrapper.subscribeToMapEvent('zoom_changed').subscribe(() => {\n      this._mapsWrapper.getZoom().then((z: number) => {\n        this.zoom = z;\n        this.zoomChange.emit(z);\n      });\n    });\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleIdleEvent() {\n    const s = this._mapsWrapper.subscribeToMapEvent('idle').subscribe(\n      () => { this.idle.emit(void 0); });\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleTilesLoadedEvent() {\n    const s = this._mapsWrapper.subscribeToMapEvent('tilesloaded').subscribe(\n      () => this.tilesLoaded.emit(void 0),\n    );\n    this._observableSubscriptions.push(s);\n  }\n\n  private _handleMapMouseEvents() {\n    type Event = { name: 'rightclick' | 'click' | 'dblclick', emitter: EventEmitter<google.maps.MouseEvent> };\n\n    const events: Event[] = [\n      {name: 'click', emitter: this.mapClick},\n      {name: 'rightclick', emitter: this.mapRightClick},\n      {name: 'dblclick', emitter: this.mapDblClick},\n    ];\n\n    events.forEach(e => {\n      const s = this._mapsWrapper.subscribeToMapEvent(e.name).subscribe(\n        ([event]) => {\n          // the placeId will be undefined in case the event was not an IconMouseEvent (google types)\n          if ( (event as google.maps.IconMouseEvent).placeId && !this.showDefaultInfoWindow) {\n            event.stop();\n          }\n          e.emitter.emit(event);\n        });\n      this._observableSubscriptions.push(s);\n    });\n  }\n\n  _handleControlChange() {\n    this._setControls();\n    this.mapControls.changes.subscribe(() => this._setControls());\n  }\n\n  _setControls() {\n    const controlOptions: Partial<google.maps.MapOptions> = {\n      fullscreenControl: !this.disableDefaultUI,\n      mapTypeControl: false,\n      panControl: false,\n      rotateControl: false,\n      scaleControl: false,\n      streetViewControl: !this.disableDefaultUI,\n      zoomControl: !this.disableDefaultUI,\n    };\n    this.mapControls.forEach(control => Object.assign(controlOptions, control.getOptions()));\n    this._mapsWrapper.setMapOptions(controlOptions);\n  }\n}\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChange } from '@angular/core';\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { AgmInfoWindow } from './info-window';\n\nlet markerId = 0;\n\n/**\n * AgmMarker renders a map marker inside a {@link AgmMap}.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  styles: [`\n *    .agm-map-container {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *      <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n *      </agm-marker>\n *    </agm-map>\n *  `\n * })\n * ```\n */\n@Directive({\n  selector: 'agm-marker',\n  providers: [\n    { provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmMarker) },\n  ],\n})\nexport class AgmMarker implements OnDestroy, OnChanges, AfterContentInit, FitBoundsAccessor {\n  /**\n   * The latitude position of the marker.\n   */\n  @Input() latitude: number;\n\n  /**\n   * The longitude position of the marker.\n   */\n  @Input() longitude: number;\n\n  /**\n   * The title of the marker.\n   */\n  @Input() title: string;\n\n  /**\n   * The label (a single uppercase character) for the marker.\n   */\n  @Input() label: string | google.maps.MarkerLabel;\n\n  /**\n   * If true, the marker can be dragged. Default value is false.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('markerDraggable') draggable = false;\n\n  /**\n   * Icon (the URL of the image) for the foreground.\n   */\n  @Input() iconUrl: string | google.maps.Icon | google.maps.Symbol;\n\n  /**\n   * If true, the marker is visible\n   */\n  @Input() visible = true;\n\n  /**\n   * Whether to automatically open the child info window when the marker is clicked.\n   */\n  @Input() openInfoWindow = true;\n\n  /**\n   * The marker's opacity between 0.0 and 1.0.\n   */\n  @Input() opacity = 1;\n\n  /**\n   * All markers are displayed on the map in order of their zIndex, with higher values displaying in\n   * front of markers with lower values. By default, markers are displayed according to their\n   * vertical position on screen, with lower markers appearing in front of markers further up the\n   * screen.\n   */\n  @Input() zIndex = 1;\n\n  /**\n   * If true, the marker can be clicked. Default value is true.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('markerClickable') clickable = true;\n\n  /**\n   * Which animation to play when marker is added to a map.\n   * This can be 'BOUNCE' or 'DROP'\n   */\n  @Input() animation: keyof typeof google.maps.Animation;\n\n  /**\n   * This event is fired when the marker's animation property changes.\n   */\n  @Output() animationChange = new EventEmitter<keyof typeof google.maps.Animation>();\n\n  /**\n   * This event emitter gets emitted when the user clicks on the marker.\n   */\n  @Output() markerClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\n\n  /**\n   * This event emitter gets emitted when the user clicks twice on the marker.\n   */\n  @Output() markerDblClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\n\n  /**\n   * This event is fired when the user rightclicks on the marker.\n   */\n  @Output() markerRightClick: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * This event is fired when the user starts dragging the marker.\n   */\n  @Output() dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is repeatedly fired while the user drags the marker.\n   */\n  // tslint:disable-next-line: no-output-native\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user stops dragging the marker.\n   */\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user mouses over the marker.\n   */\n  @Output() mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user mouses outside the marker.\n   */\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /** @internal */\n  @ContentChildren(AgmInfoWindow) infoWindow: QueryList<AgmInfoWindow> = new QueryList<AgmInfoWindow>();\n\n  private _markerAddedToManger = false;\n  private _id: string;\n  private _observableSubscriptions: Subscription[] = [];\n\n  protected readonly _fitBoundsDetails$: ReplaySubject<FitBoundsDetails> = new ReplaySubject<FitBoundsDetails>(1);\n\n  constructor(private _markerManager: MarkerManager) { this._id = (markerId++).toString(); }\n\n  /* @internal */\n  ngAfterContentInit() {\n    this.handleInfoWindowUpdate();\n    this.infoWindow.changes.subscribe(() => this.handleInfoWindowUpdate());\n  }\n\n  private handleInfoWindowUpdate() {\n    if (this.infoWindow.length > 1) {\n      throw new Error('Expected no more than one info window.');\n    }\n    this.infoWindow.forEach(marker => {\n      marker.hostMarker = this;\n    });\n  }\n\n  /** @internal */\n  ngOnChanges(changes: { [key: string]: SimpleChange }) {\n    if (typeof this.latitude === 'string') {\n      this.latitude = Number(this.latitude);\n    }\n    if (typeof this.longitude === 'string') {\n      this.longitude = Number(this.longitude);\n    }\n    if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n      return;\n    }\n    if (!this._markerAddedToManger) {\n      this._markerManager.addMarker(this);\n      this._updateFitBoundsDetails();\n      this._markerAddedToManger = true;\n      this._addEventListeners();\n      return;\n    }\n    // tslint:disable: no-string-literal\n    if (changes['latitude'] || changes['longitude']) {\n      this._markerManager.updateMarkerPosition(this);\n      this._updateFitBoundsDetails();\n    }\n    if (changes['title']) {\n      this._markerManager.updateTitle(this);\n    }\n    if (changes['label']) {\n      this._markerManager.updateLabel(this);\n    }\n    if (changes['draggable']) {\n      this._markerManager.updateDraggable(this);\n    }\n    if (changes['iconUrl']) {\n      this._markerManager.updateIcon(this);\n    }\n    if (changes['opacity']) {\n      this._markerManager.updateOpacity(this);\n    }\n    if (changes['visible']) {\n      this._markerManager.updateVisible(this);\n    }\n    if (changes['zIndex']) {\n      this._markerManager.updateZIndex(this);\n    }\n    if (changes['clickable']) {\n      this._markerManager.updateClickable(this);\n    }\n    if (changes['animation']) {\n      this._markerManager.updateAnimation(this);\n    }\n    // tslint:enable: no-string-literal\n\n  }\n\n  /** @internal */\n  getFitBoundsDetails$(): Observable<FitBoundsDetails> {\n    return this._fitBoundsDetails$.asObservable();\n  }\n\n  protected _updateFitBoundsDetails() {\n    this._fitBoundsDetails$.next({ latLng: { lat: this.latitude, lng: this.longitude } });\n  }\n\n  private _addEventListeners() {\n    const cs = this._markerManager.createEventObservable('click', this).subscribe(() => {\n      if (this.openInfoWindow) {\n        this.infoWindow.forEach(infoWindow => infoWindow.open());\n      }\n      this.markerClick.emit(this);\n    });\n    this._observableSubscriptions.push(cs);\n\n    const dcs = this._markerManager.createEventObservable('dblclick', this).subscribe(() => {\n      this.markerDblClick.emit(null);\n    });\n    this._observableSubscriptions.push(dcs);\n\n    const rc = this._markerManager.createEventObservable('rightclick', this).subscribe(() => {\n      this.markerRightClick.emit(null);\n    });\n    this._observableSubscriptions.push(rc);\n\n    const ds =\n        this._markerManager.createEventObservable<google.maps.MouseEvent>('dragstart', this)\n            .subscribe(e => this.dragStart.emit(e));\n    this._observableSubscriptions.push(ds);\n\n    const d =\n        this._markerManager.createEventObservable<google.maps.MouseEvent>('drag', this)\n          .subscribe(e => this.drag.emit(e));\n    this._observableSubscriptions.push(d);\n\n    const de =\n        this._markerManager.createEventObservable<google.maps.MouseEvent>('dragend', this)\n          .subscribe(e => this.dragEnd.emit(e));\n    this._observableSubscriptions.push(de);\n\n    const mover =\n        this._markerManager.createEventObservable<google.maps.MouseEvent>('mouseover', this)\n          .subscribe(e => this.mouseOver.emit(e));\n    this._observableSubscriptions.push(mover);\n\n    const mout =\n        this._markerManager.createEventObservable<google.maps.MouseEvent>('mouseout', this)\n          .subscribe(e => this.mouseOut.emit(e));\n    this._observableSubscriptions.push(mout);\n\n    const anChng =\n      this._markerManager.createEventObservable<void>('animation_changed', this)\n        .subscribe(() => {\n          this.animationChange.emit(this.animation);\n        });\n    this._observableSubscriptions.push(anChng);\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  toString(): string { return 'AgmMarker-' + this._id.toString(); }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._markerManager.deleteMarker(this);\n    // unsubscribe all registered observable subscriptions\n    this._observableSubscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import { AfterContentInit, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PolygonManager } from '../services/managers/polygon-manager';\nimport { MVCEvent } from '../utils/mvcarray-utils';\n\n/**\n * AgmPolygon renders a polygon on a {@link AgmMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  styles: [`\n *    agm-map {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *      <agm-polygon [paths]=\"paths\">\n *      </agm-polygon>\n *    </agm-map>\n *  `\n * })\n * export class MyMapCmp {\n *   lat: number = 0;\n *   lng: number = 0;\n *   zoom: number = 10;\n *   paths: LatLngLiteral[] = [\n *     { lat: 0,  lng: 10 },\n *     { lat: 0,  lng: 20 },\n *     { lat: 10, lng: 20 },\n *     { lat: 10, lng: 10 },\n *     { lat: 0,  lng: 10 }\n *   ]\n *   // Nesting paths will create a hole where they overlap;\n *   nestedPaths: LatLngLiteral[][] = [[\n *     { lat: 0,  lng: 10 },\n *     { lat: 0,  lng: 20 },\n *     { lat: 10, lng: 20 },\n *     { lat: 10, lng: 10 },\n *     { lat: 0,  lng: 10 }\n *   ], [\n *     { lat: 0, lng: 15 },\n *     { lat: 0, lng: 20 },\n *     { lat: 5, lng: 20 },\n *     { lat: 5, lng: 15 },\n *     { lat: 0, lng: 15 }\n *   ]]\n * }\n * ```\n */\n@Directive({\n  selector: 'agm-polygon',\n})\nexport class AgmPolygon implements OnDestroy, OnChanges, AfterContentInit {\n  /**\n   * Indicates whether this Polygon handles mouse events. Defaults to true.\n   */\n  @Input() clickable = true;\n\n  /**\n   * If set to true, the user can drag this shape over the map. The geodesic\n   * property defines the mode of dragging. Defaults to false.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('polyDraggable') draggable = false;\n\n  /**\n   * If set to true, the user can edit this shape by dragging the control\n   * points shown at the vertices and on each segment. Defaults to false.\n   */\n  @Input() editable = false;\n\n  /**\n   * The fill color. All CSS3 colors are supported except for extended\n   * named colors.\n   */\n  @Input() fillColor: string;\n\n  /**\n   * The fill opacity between 0.0 and 1.0\n   */\n  @Input() fillOpacity: number;\n\n  /**\n   * When true, edges of the polygon are interpreted as geodesic and will\n   * follow the curvature of the Earth. When false, edges of the polygon are\n   * rendered as straight lines in screen space. Note that the shape of a\n   * geodesic polygon may appear to change when dragged, as the dimensions\n   * are maintained relative to the surface of the earth. Defaults to false.\n   */\n  @Input() geodesic = false;\n\n  /**\n   * The ordered sequence of coordinates that designates a closed loop.\n   * Unlike polylines, a polygon may consist of one or more paths.\n   *  As a result, the paths property may specify one or more arrays of\n   * LatLng coordinates. Paths are closed automatically; do not repeat the\n   * first vertex of the path as the last vertex. Simple polygons may be\n   * defined using a single array of LatLngs. More complex polygons may\n   * specify an array of arrays. Any simple arrays are converted into Arrays.\n   * Inserting or removing LatLngs from the Array will automatically update\n   * the polygon on the map.\n   */\n  @Input() paths: google.maps.LatLng[] | google.maps.LatLng[][] |\n      google.maps.MVCArray<google.maps.LatLng> | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>> |\n      google.maps.LatLngLiteral[] | google.maps.LatLngLiteral[][] = [];\n\n  /**\n   * The stroke color. All CSS3 colors are supported except for extended\n   * named colors.\n   */\n  @Input() strokeColor: string;\n\n  /**\n   * The stroke opacity between 0.0 and 1.0\n   */\n  @Input() strokeOpacity: number;\n\n  /**\n   * The stroke width in pixels.\n   */\n  @Input() strokeWeight: number;\n\n  /**\n   * Whether this polygon is visible on the map. Defaults to true.\n   */\n  @Input() visible: boolean;\n\n  /**\n   * The zIndex compared to other polys.\n   */\n  @Input() zIndex: number;\n\n  /**\n   * This event is fired when the DOM click event is fired on the Polygon.\n   */\n  @Output() polyClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the DOM dblclick event is fired on the Polygon.\n   */\n  @Output() polyDblClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is repeatedly fired while the user drags the polygon.\n   */\n  @Output() polyDrag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user stops dragging the polygon.\n   */\n  @Output() polyDragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user starts dragging the polygon.\n   */\n  @Output() polyDragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousedown event is fired on the Polygon.\n   */\n  @Output() polyMouseDown: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousemove event is fired on the Polygon.\n   */\n  @Output() polyMouseMove: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired on Polygon mouseout.\n   */\n  @Output() polyMouseOut: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired on Polygon mouseover.\n   */\n  @Output() polyMouseOver: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired whe the DOM mouseup event is fired on the Polygon\n   */\n  @Output() polyMouseUp: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the Polygon is right-clicked on.\n   */\n  @Output() polyRightClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired after Polygon first path changes.\n   */\n  @Output() polyPathsChange = new EventEmitter<MVCEvent<google.maps.LatLng[] | google.maps.LatLngLiteral[]>>();\n\n  private static _polygonOptionsAttributes: string[] = [\n    'clickable', 'draggable', 'editable', 'fillColor', 'fillOpacity', 'geodesic', 'icon', 'map',\n    'paths', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'visible', 'zIndex', 'draggable',\n    'editable', 'visible',\n  ];\n\n  private _id: string;\n  private _polygonAddedToManager = false;\n  private _subscriptions: Subscription[] = [];\n\n  constructor(private _polygonManager: PolygonManager) { }\n\n  /** @internal */\n  ngAfterContentInit() {\n    if (!this._polygonAddedToManager) {\n      this._init();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): any {\n    if (!this._polygonAddedToManager) {\n      this._init();\n      return;\n    }\n\n    this._polygonManager.setPolygonOptions(this, this._updatePolygonOptions(changes));\n  }\n\n  private _init() {\n    this._polygonManager.addPolygon(this);\n    this._polygonAddedToManager = true;\n    this._addEventListeners();\n  }\n\n  private _addEventListeners() {\n    const handlers = [\n      { name: 'click', handler: (ev: google.maps.PolyMouseEvent) => this.polyClick.emit(ev) },\n      { name: 'dblclick', handler: (ev: google.maps.PolyMouseEvent) => this.polyDblClick.emit(ev) },\n      { name: 'drag', handler: (ev: google.maps.MouseEvent) => this.polyDrag.emit(ev) },\n      { name: 'dragend', handler: (ev: google.maps.MouseEvent) => this.polyDragEnd.emit(ev) },\n      { name: 'dragstart', handler: (ev: google.maps.MouseEvent) => this.polyDragStart.emit(ev) },\n      { name: 'mousedown', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseDown.emit(ev) },\n      { name: 'mousemove', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseMove.emit(ev) },\n      { name: 'mouseout', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseOut.emit(ev) },\n      { name: 'mouseover', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseOver.emit(ev) },\n      { name: 'mouseup', handler: (ev: google.maps.PolyMouseEvent) => this.polyMouseUp.emit(ev) },\n      { name: 'rightclick', handler: (ev: google.maps.PolyMouseEvent) => this.polyRightClick.emit(ev) },\n    ];\n    handlers.forEach((obj) => {\n      const os = this._polygonManager.createEventObservable(obj.name, this).subscribe(obj.handler);\n      this._subscriptions.push(os);\n    });\n\n    this._polygonManager.createPathEventObservable(this)\n    .then(paths$ => {\n      const os = paths$.subscribe(pathEvent => this.polyPathsChange.emit(pathEvent));\n      this._subscriptions.push(os);\n    });\n  }\n\n  private _updatePolygonOptions(changes: SimpleChanges): google.maps.PolygonOptions {\n    return Object.keys(changes)\n      .filter(k => AgmPolygon._polygonOptionsAttributes.indexOf(k) !== -1)\n      .reduce((obj: any, k: string) => {\n        obj[k] = changes[k].currentValue;\n        return obj;\n      }, {});\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._polygonManager.deletePolygon(this);\n    // unsubscribe all registered observable subscriptions\n    this._subscriptions.forEach((s) => s.unsubscribe());\n  }\n\n  getPath(): Promise<google.maps.LatLng[]> {\n    return this._polygonManager.getPath(this);\n  }\n\n  getPaths(): Promise<google.maps.LatLng[][]> {\n    return this._polygonManager.getPaths(this);\n  }\n}\n","import { Directive, Input, OnInit } from '@angular/core';\n\n/**\n * AgmPolylineIcon enables to add polyline sequences to add arrows, circle,\n * or custom icons either along the entire line, or in a specific part of it.\n * See https://developers.google.com/maps/documentation/javascript/shapes#polyline_customize\n *\n * ### Example\n * ```html\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *      <agm-polyline>\n *          <agm-icon-sequence [fixedRotation]=\"true\" [path]=\"'FORWARD_OPEN_ARROW'\">\n *          </agm-icon-sequence>\n *      </agm-polyline>\n *    </agm-map>\n * ```\n */\n@Directive({selector: 'agm-polyline agm-icon-sequence'})\nexport class AgmPolylineIcon implements OnInit{\n\n  /**\n   * If `true`, each icon in the sequence has the same fixed rotation regardless of the\n   * angle of the edge on which it lies. Defaults to `false`, in which case each icon\n   * in the sequence is rotated to align with its edge.\n   */\n  @Input() fixedRotation: boolean;\n\n  /**\n   * The distance from the start of the line at which an icon is to be rendered. This\n   * distance may be expressed as a percentage of line's length (e.g. '50%') or in pixels\n   * (e.g. '50px'). Defaults to '100%'.\n   */\n  @Input() offset: string;\n\n  /**\n   * The distance between consecutive icons on the line. This distance may be expressed as\n   * a percentage of the line's length (e.g. '50%') or in pixels (e.g. '50px'). To disable\n   * repeating of the icon, specify '0'. Defaults to '0'.\n   */\n  @Input() repeat: string;\n\n  /**\n   * The x coordinate of the position of the symbol relative to the polyline. The coordinate\n   * of the symbol's path is translated _left_ by the anchor's x coordinate. By default, a\n   * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\n   * symbol's path.\n   */\n  @Input() anchorX: number;\n\n  /**\n   * The y coordinate of the position of the symbol relative to the polyline. The coordinate\n   * of the symbol's path is translated _up_ by the anchor's y coordinate. By default, a\n   * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\n   * symbol's path.\n   */\n  @Input() anchorY: number;\n\n  /**\n   * The symbol's fill color. All CSS3 colors are supported except for extended named\n   * colors. Defaults to the stroke color of the corresponding polyline.\n   */\n  @Input() fillColor: string;\n\n  /**\n   * The symbol's fill opacity. Defaults to 0.\n   */\n  @Input() fillOpacity: number;\n\n  /**\n   * The symbol's path, which is a built-in symbol path, or a custom path expressed using\n   * SVG path notation. Required.\n   */\n  @Input() path: keyof typeof google.maps.SymbolPath | string;\n\n  /**\n   * The angle by which to rotate the symbol, expressed clockwise in degrees.\n   * Defaults to 0. A symbol where `fixedRotation` is `false` is rotated relative to\n   * the angle of the edge on which it lies.\n   */\n  @Input() rotation: number;\n\n  /**\n   * The amount by which the symbol is scaled in size. Defaults to the stroke weight\n   * of the polyline; after scaling, the symbol must lie inside a square 22 pixels in\n   * size centered at the symbol's anchor.\n   */\n  @Input() scale: number;\n\n  /**\n   * The symbol's stroke color. All CSS3 colors are supported except for extended named\n   * colors. Defaults to the stroke color of the polyline.\n   */\n  @Input() strokeColor: string;\n\n  /**\n   * The symbol's stroke opacity. Defaults to the stroke opacity of the polyline.\n   */\n  @Input() strokeOpacity: number;\n\n  /**\n   * The symbol's stroke weight. Defaults to the scale of the symbol.\n   */\n  @Input() strokeWeight: number;\n\n  ngOnInit(): void {\n    if (this.path == null) {\n      throw new Error('Icon Sequence path is required');\n    }\n  }\n}\n","import { Directive, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\n\n/**\n * AgmPolylinePoint represents one element of a polyline within a  {@link\n * AgmPolyline}\n */\n@Directive({\n  selector: 'agm-polyline-point',\n  providers: [\n    {provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmPolylinePoint)},\n  ],\n})\nexport class AgmPolylinePoint implements OnChanges, FitBoundsAccessor {\n  /**\n   * The latitude position of the point.\n   */\n  @Input() public latitude: number;\n\n  /**\n   * The longitude position of the point;\n   */\n  @Input() public longitude: number;\n\n  /**\n   * This event emitter gets emitted when the position of the point changed.\n   */\n  @Output() positionChanged: EventEmitter<google.maps.LatLngLiteral> = new EventEmitter<google.maps.LatLngLiteral>();\n\n  constructor() {}\n\n  ngOnChanges(changes: SimpleChanges): any {\n    // tslint:disable: no-string-literal\n    if (changes['latitude'] || changes['longitude']) {\n      this.positionChanged.emit({\n        lat: changes['latitude'] ? changes['latitude'].currentValue : this.latitude,\n        lng: changes['longitude'] ? changes['longitude'].currentValue : this.longitude,\n      });\n    }\n    // tslint:enable: no-string-literal\n  }\n\n  /** @internal */\n  getFitBoundsDetails$(): Observable<FitBoundsDetails> {\n    return this.positionChanged.pipe(\n      startWith({lat: this.latitude, lng: this.longitude}),\n      map(position => ({latLng: position}))\n    );\n  }\n}\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { MVCEvent } from '../utils/mvcarray-utils';\nimport { AgmPolylineIcon } from './polyline-icon';\nimport { AgmPolylinePoint } from './polyline-point';\n\nlet polylineId = 0;\n/**\n * AgmPolyline renders a polyline on a {@link AgmMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n *  selector: 'my-map-cmp',\n *  styles: [`\n *    .agm-map-container {\n *      height: 300px;\n *    }\n * `],\n *  template: `\n *    <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n *      <agm-polyline>\n *          <agm-polyline-point [latitude]=\"latA\" [longitude]=\"lngA\">\n *          </agm-polyline-point>\n *          <agm-polyline-point [latitude]=\"latB\" [longitude]=\"lngB\">\n *          </agm-polyline-point>\n *      </agm-polyline>\n *    </agm-map>\n *  `\n * })\n * ```\n */\n@Directive({\n  selector: 'agm-polyline',\n})\nexport class AgmPolyline implements OnDestroy, OnChanges, AfterContentInit {\n  /**\n   * Indicates whether this Polyline handles mouse events. Defaults to true.\n   */\n  @Input() clickable = true;\n\n  /**\n   * If set to true, the user can drag this shape over the map. The geodesic property defines the\n   * mode of dragging. Defaults to false.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('polylineDraggable') draggable = false;\n\n  /**\n   * If set to true, the user can edit this shape by dragging the control points shown at the\n   * vertices and on each segment. Defaults to false.\n   */\n  @Input() editable = false;\n\n  /**\n   * When true, edges of the polygon are interpreted as geodesic and will follow the curvature of\n   * the Earth. When false, edges of the polygon are rendered as straight lines in screen space.\n   * Note that the shape of a geodesic polygon may appear to change when dragged, as the dimensions\n   * are maintained relative to the surface of the earth. Defaults to false.\n   */\n  @Input() geodesic = false;\n\n  /**\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\n   */\n  @Input() strokeColor: string;\n\n  /**\n   * The stroke opacity between 0.0 and 1.0.\n   */\n  @Input() strokeOpacity: number;\n\n  /**\n   * The stroke width in pixels.\n   */\n  @Input() strokeWeight: number;\n\n  /**\n   * Whether this polyline is visible on the map. Defaults to true.\n   */\n  @Input() visible = true;\n\n  /**\n   * The zIndex compared to other polys.\n   */\n  @Input() zIndex: number;\n\n  /**\n   * This event is fired when the DOM click event is fired on the Polyline.\n   */\n  @Output() lineClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the DOM dblclick event is fired on the Polyline.\n   */\n  @Output() lineDblClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is repeatedly fired while the user drags the polyline.\n   */\n  @Output() lineDrag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user stops dragging the polyline.\n   */\n  @Output() lineDragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user starts dragging the polyline.\n   */\n  @Output() lineDragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousedown event is fired on the Polyline.\n   */\n  @Output() lineMouseDown: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousemove event is fired on the Polyline.\n   */\n  @Output() lineMouseMove: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired on Polyline mouseout.\n   */\n  @Output() lineMouseOut: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired on Polyline mouseover.\n   */\n  @Output() lineMouseOver: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired whe the DOM mouseup event is fired on the Polyline\n   */\n  @Output() lineMouseUp: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired when the Polyline is right-clicked on.\n   */\n  @Output() lineRightClick: EventEmitter<google.maps.PolyMouseEvent> = new EventEmitter<google.maps.PolyMouseEvent>();\n\n  /**\n   * This event is fired after Polyline's path changes.\n   */\n  @Output() polyPathChange = new EventEmitter<MVCEvent<google.maps.LatLng>>();\n\n  /**\n   * @internal\n   */\n  @ContentChildren(AgmPolylinePoint) points: QueryList<AgmPolylinePoint>;\n\n  @ContentChildren(AgmPolylineIcon) iconSequences: QueryList<AgmPolylineIcon>;\n\n  private static _polylineOptionsAttributes: string[] = [\n    'draggable', 'editable', 'visible', 'geodesic', 'strokeColor', 'strokeOpacity', 'strokeWeight',\n    'zIndex',\n  ];\n\n  private _id: string;\n  private _polylineAddedToManager = false;\n  private _subscriptions: Subscription[] = [];\n\n  constructor(private _polylineManager: PolylineManager) { this._id = (polylineId++).toString(); }\n\n  /** @internal */\n  ngAfterContentInit() {\n    if (this.points.length) {\n      this.points.forEach((point: AgmPolylinePoint) => {\n        const s = point.positionChanged.subscribe(\n            () => { this._polylineManager.updatePolylinePoints(this); });\n        this._subscriptions.push(s);\n      });\n    }\n    if (!this._polylineAddedToManager) {\n      this._init();\n    }\n    const pointSub = this.points.changes.subscribe(() => this._polylineManager.updatePolylinePoints(this));\n    this._subscriptions.push(pointSub);\n    this._polylineManager.updatePolylinePoints(this);\n\n    const iconSub = this.iconSequences.changes.subscribe(() => this._polylineManager.updateIconSequences(this));\n    this._subscriptions.push(iconSub);\n  }\n\n  ngOnChanges(changes: SimpleChanges): any {\n    if (!this._polylineAddedToManager) {\n      this._init();\n      return;\n    }\n\n    const options: {[propName: string]: any} = {};\n    const optionKeys = Object.keys(changes).filter(\n        k => AgmPolyline._polylineOptionsAttributes.indexOf(k) !== -1);\n    optionKeys.forEach(k => options[k] = changes[k].currentValue);\n    this._polylineManager.setPolylineOptions(this, options);\n  }\n\n  getPath(): Promise<google.maps.LatLng[]> {\n    return this._polylineManager.getPath(this);\n  }\n\n  private _init() {\n    this._polylineManager.addPolyline(this);\n    this._polylineAddedToManager = true;\n    this._addEventListeners();\n  }\n\n  private _addEventListeners() {\n    const handlers = [\n      {name: 'click', handler: (ev: google.maps.PolyMouseEvent) => this.lineClick.emit(ev)},\n      {name: 'dblclick', handler: (ev: google.maps.PolyMouseEvent) => this.lineDblClick.emit(ev)},\n      {name: 'drag', handler: (ev: google.maps.MouseEvent) => this.lineDrag.emit(ev)},\n      {name: 'dragend', handler: (ev: google.maps.MouseEvent) => this.lineDragEnd.emit(ev)},\n      {name: 'dragstart', handler: (ev: google.maps.MouseEvent) => this.lineDragStart.emit(ev)},\n      {name: 'mousedown', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseDown.emit(ev)},\n      {name: 'mousemove', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseMove.emit(ev)},\n      {name: 'mouseout', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseOut.emit(ev)},\n      {name: 'mouseover', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseOver.emit(ev)},\n      {name: 'mouseup', handler: (ev: google.maps.PolyMouseEvent) => this.lineMouseUp.emit(ev)},\n      {name: 'rightclick', handler: (ev: google.maps.PolyMouseEvent) => this.lineRightClick.emit(ev)},\n    ];\n    handlers.forEach((obj) => {\n      const os = this._polylineManager.createEventObservable(obj.name, this).subscribe(obj.handler);\n      this._subscriptions.push(os);\n    });\n\n    this._polylineManager.createPathEventObservable(this).then((ob$) => {\n      const os = ob$.subscribe(pathEvent => this.polyPathChange.emit(pathEvent));\n      this._subscriptions.push(os);\n    });\n  }\n\n  /** @internal */\n  _getPoints(): AgmPolylinePoint[] {\n    if (this.points) {\n      return this.points.toArray();\n    }\n    return [];\n  }\n\n  _getIcons(): Array<AgmPolylineIcon> {\n    if (this.iconSequences) {\n      return this.iconSequences.toArray();\n    }\n    return [];\n  }\n\n  /** @internal */\n  id(): string { return this._id; }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._polylineManager.deletePolyline(this);\n    // unsubscribe all registered observable subscriptions\n    this._subscriptions.forEach((s) => s.unsubscribe());\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChange,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { RectangleManager } from '../services/managers/rectangle-manager';\n\n@Directive({\n  selector: 'agm-rectangle',\n})\nexport class AgmRectangle implements OnInit, OnChanges, OnDestroy {\n  /**\n   * The north position of the rectangle (required).\n   */\n  @Input() north: number;\n\n  /**\n   * The east position of the rectangle (required).\n   */\n  @Input() east: number;\n\n  /**\n   * The south position of the rectangle (required).\n   */\n  @Input() south: number;\n\n  /**\n   * The west position of the rectangle (required).\n   */\n  @Input() west: number;\n\n  /**\n   * Indicates whether this Rectangle handles mouse events. Defaults to true.\n   */\n  @Input() clickable = true;\n\n  /**\n   * If set to true, the user can drag this rectangle over the map. Defaults to false.\n   */\n  // tslint:disable-next-line:no-input-rename\n  @Input('rectangleDraggable') draggable = false;\n\n  /**\n   * If set to true, the user can edit this rectangle by dragging the control points shown at\n   * the center and around the circumference of the rectangle. Defaults to false.\n   */\n  @Input() editable = false;\n\n  /**\n   * The fill color. All CSS3 colors are supported except for extended named colors.\n   */\n  @Input() fillColor: string;\n\n  /**\n   * The fill opacity between 0.0 and 1.0.\n   */\n  @Input() fillOpacity: number;\n\n  /**\n   * The stroke color. All CSS3 colors are supported except for extended named colors.\n   */\n  @Input() strokeColor: string;\n\n  /**\n   * The stroke opacity between 0.0 and 1.0\n   */\n  @Input() strokeOpacity: number;\n\n  /**\n   * The stroke position. Defaults to CENTER.\n   * This property is not supported on Internet Explorer 8 and earlier.\n   */\n  @Input() strokePosition: keyof typeof google.maps.StrokePosition = 'CENTER';\n\n  /**\n   * The stroke width in pixels.\n   */\n  @Input() strokeWeight = 0;\n\n  /**\n   * Whether this rectangle is visible on the map. Defaults to true.\n   */\n  @Input() visible = true;\n\n  /**\n   * The zIndex compared to other polys.\n   */\n  @Input() zIndex: number;\n\n  /**\n   * This event is fired when the rectangle's is changed.\n   */\n  @Output()\n  boundsChange: EventEmitter<google.maps.LatLngBoundsLiteral> = new EventEmitter<\n    google.maps.LatLngBoundsLiteral\n  >();\n\n  /**\n   * This event emitter gets emitted when the user clicks on the rectangle.\n   */\n  @Output()\n  rectangleClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event emitter gets emitted when the user clicks on the rectangle.\n   */\n  @Output()\n  rectangleDblClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is repeatedly fired while the user drags the rectangle.\n   */\n  // tslint:disable-next-line: no-output-native\n  @Output() drag: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user stops dragging the rectangle.\n   */\n  @Output() dragEnd: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the user starts dragging the rectangle.\n   */\n  @Output()\n  dragStart: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousedown event is fired on the rectangle.\n   */\n  @Output()\n  mouseDown: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mousemove event is fired on the rectangle.\n   */\n  @Output()\n  mouseMove: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired on rectangle mouseout.\n   */\n  @Output() mouseOut: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired on rectangle mouseover.\n   */\n  @Output()\n  mouseOver: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the DOM mouseup event is fired on the rectangle.\n   */\n  @Output() mouseUp: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  /**\n   * This event is fired when the rectangle is right-clicked on.\n   */\n  @Output()\n  rightClick: EventEmitter<google.maps.MouseEvent> = new EventEmitter<google.maps.MouseEvent>();\n\n  private _rectangleAddedToManager = false;\n\n  private static _mapOptions: string[] = [\n    'fillColor',\n    'fillOpacity',\n    'strokeColor',\n    'strokeOpacity',\n    'strokePosition',\n    'strokeWeight',\n    'visible',\n    'zIndex',\n    'clickable',\n  ];\n\n  private _eventSubscriptions: Subscription[] = [];\n\n  constructor(private _manager: RectangleManager) {}\n\n  /** @internal */\n  ngOnInit() {\n    this._manager.addRectangle(this);\n    this._rectangleAddedToManager = true;\n    this._registerEventListeners();\n  }\n\n  /** @internal */\n  ngOnChanges(changes: { [key: string]: SimpleChange }) {\n    if (!this._rectangleAddedToManager) {\n      return;\n    }\n    // tslint:disable: no-string-literal\n    if (\n      changes['north'] ||\n      changes['east'] ||\n      changes['south'] ||\n      changes['west']\n    ) {\n      this._manager.setBounds(this);\n    }\n    if (changes['editable']) {\n      this._manager.setEditable(this);\n    }\n    if (changes['draggable']) {\n      this._manager.setDraggable(this);\n    }\n    if (changes['visible']) {\n      this._manager.setVisible(this);\n    }\n    // tslint:enable: no-string-literal\n    this._updateRectangleOptionsChanges(changes);\n  }\n\n  private _updateRectangleOptionsChanges(changes: {\n    [propName: string]: SimpleChange;\n  }) {\n    const options: google.maps.RectangleOptions = {};\n    const optionKeys = Object.keys(changes).filter(\n      k => AgmRectangle._mapOptions.indexOf(k) !== -1,\n    );\n    optionKeys.forEach(k => {\n      options[k] = changes[k].currentValue;\n    });\n\n    if (optionKeys.length > 0) {\n      this._manager.setOptions(this, options);\n    }\n  }\n\n  private _registerEventListeners() {\n    const events: Map<string, EventEmitter<any>> = new Map<\n      string,\n      EventEmitter<any>\n    >();\n    events.set('bounds_changed', this.boundsChange);\n    events.set('click', this.rectangleClick);\n    events.set('dblclick', this.rectangleDblClick);\n    events.set('drag', this.drag);\n    events.set('dragend', this.dragEnd);\n    events.set('dragStart', this.dragStart);\n    events.set('mousedown', this.mouseDown);\n    events.set('mousemove', this.mouseMove);\n    events.set('mouseout', this.mouseOut);\n    events.set('mouseover', this.mouseOver);\n    events.set('mouseup', this.mouseUp);\n    events.set('rightclick', this.rightClick);\n\n    events.forEach((eventEmitter, eventName) => {\n      this._eventSubscriptions.push(\n        this._manager\n          .createEventObservable<google.maps.MouseEvent>(eventName, this)\n          .subscribe(value => {\n            switch (eventName) {\n              case 'bounds_changed':\n                this._manager.getBounds(this).then(bounds =>\n                  eventEmitter.emit({\n                    north: bounds.getNorthEast().lat(),\n                    east: bounds.getNorthEast().lng(),\n                    south: bounds.getSouthWest().lat(),\n                    west: bounds.getSouthWest().lng(),\n                  } as google.maps.LatLngBoundsLiteral),\n                );\n                break;\n              default:\n                eventEmitter.emit(value);\n            }\n          }),\n      );\n    });\n  }\n\n  /** @internal */\n  ngOnDestroy() {\n    this._eventSubscriptions.forEach(s => s.unsubscribe());\n    this._eventSubscriptions = null;\n    this._manager.removeRectangle(this);\n  }\n\n  /**\n   * Gets the LatLngBounds of this Rectangle.\n   */\n  getBounds(): Promise<google.maps.LatLngBounds> {\n    return this._manager.getBounds(this);\n  }\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { LayerManager } from '../services/managers/layer-manager';\n\nlet layerId = 0;\n\n/*\n * This directive adds a transit layer to a google map instance\n * <agm-transit-layer [visible]=\"true|false\"> <agm-transit-layer>\n * */\n@Directive({\n    selector: 'agm-transit-layer',\n})\nexport class AgmTransitLayer implements OnInit, OnDestroy{\n    private _addedToManager = false;\n    private _id: string = (layerId++).toString();\n\n    /**\n     * Hide/show transit layer\n     */\n    @Input() visible = true;\n\n    constructor( private _manager: LayerManager ) {}\n\n    ngOnInit() {\n        if (this._addedToManager) {\n            return;\n        }\n        this._manager.addTransitLayer(this);\n        this._addedToManager = true;\n    }\n\n    /** @internal */\n    id(): string { return this._id; }\n\n    /** @internal */\n    toString(): string { return `AgmTransitLayer-${this._id.toString()}`; }\n\n    /** @internal */\n    ngOnDestroy() {\n        this._manager.deleteLayer(this);\n    }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AgmBicyclingLayer } from './directives/bicycling-layer';\nimport { AgmCircle } from './directives/circle';\nimport { AgmDataLayer } from './directives/data-layer';\nimport { AgmFitBounds } from './directives/fit-bounds';\nimport { AgmInfoWindow } from './directives/info-window';\nimport { AgmKmlLayer } from './directives/kml-layer';\nimport { AgmFullscreenControl, AgmMap, AgmMapTypeControl, AgmPanControl, AgmRotateControl, AgmScaleControl, AgmStreetViewControl, AgmZoomControl } from './directives/map';\nimport { AgmMarker } from './directives/marker';\nimport { AgmPolygon } from './directives/polygon';\nimport { AgmPolyline } from './directives/polyline';\nimport { AgmPolylineIcon } from './directives/polyline-icon';\nimport { AgmPolylinePoint } from './directives/polyline-point';\nimport { AgmRectangle } from './directives/rectangle';\nimport { AgmTransitLayer } from './directives/transit-layer';\n\nimport { LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral, LAZY_MAPS_API_CONFIG } from './services/maps-api-loader/lazy-maps-api-loader';\nimport { MapsAPILoader } from './services/maps-api-loader/maps-api-loader';\n\nimport { BROWSER_GLOBALS_PROVIDERS } from './utils/browser-globals';\n\n/**\n * @internal\n */\nexport function coreDirectives() {\n  return [\n    AgmBicyclingLayer,\n    AgmCircle,\n    AgmDataLayer,\n    AgmFitBounds,\n    AgmFullscreenControl,\n    AgmInfoWindow,\n    AgmKmlLayer,\n    AgmMap,\n    AgmMapTypeControl,\n    AgmMarker,\n    AgmPanControl,\n    AgmPolygon,\n    AgmPolyline,\n    AgmPolylineIcon,\n    AgmPolylinePoint,\n    AgmRectangle,\n    AgmRotateControl,\n    AgmScaleControl,\n    AgmStreetViewControl,\n    AgmTransitLayer,\n    AgmZoomControl,\n  ];\n}\n\n/**\n * The angular-google-maps core module. Contains all Directives/Services/Pipes\n * of the core module. Please use `AgmCoreModule.forRoot()` in your app module.\n */\n@NgModule({declarations: coreDirectives(), exports: coreDirectives()})\nexport class AgmCoreModule {\n  /**\n   * Please use this method when you register the module at the root level.\n   */\n  static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders<AgmCoreModule> {\n    return {\n      ngModule: AgmCoreModule,\n      providers: [\n        ...BROWSER_GLOBALS_PROVIDERS, {provide: MapsAPILoader, useClass: LazyMapsAPILoader},\n        {provide: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig},\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/services';\nexport * from './lib/directives';\nexport * from './lib/core.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapsAPILoader","i1.GoogleMapsAPIWrapper","i1.WindowRef","i1.DocumentRef","i2.MarkerManager","layerId","i1.LayerManager","i1.CircleManager","i1.DataLayerManager","i1.FitBoundsAccessor","i1.FitBoundsService","i1.InfoWindowManager","i1.KmlLayerManager","i2.FitBoundsService","i1.MarkerManager","i1.PolygonManager","i1.PolylineManager","i1.RectangleManager"],"mappings":"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"}