{"version":3,"file":"ng-azure-maps.mjs","sources":["../../../projects/ng-azure-maps/src/lib/configuration/ng-azure-maps-configuration.ts","../../../projects/ng-azure-maps/src/lib/directives/controls/control.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/controls/zoom-control.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/controls/pitch-control.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/controls/compass-control.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/controls/style-control.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/markers/html-marker.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/drawing/drawing-toolbar.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/layer-directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/source-layer-directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/symbol-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/bubble-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/line-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/polygon-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/polygon-extrusion-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/heatmap-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/image-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/layers/tile-layer.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/popups/popup.directive.ts","../../../projects/ng-azure-maps/src/lib/directives/map/azure-map.directive.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-address-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-address-reverse-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-address-reverse-cross-street-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/extended-postal-codes.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-address-structured-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/connector-set.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-fuzzy-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-nearby-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-poi-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-poi-category-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-poi-category-tree-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-along-route-optional-params.ts","../../../projects/ng-azure-maps/src/lib/models/search/search-inside-geometry-optional-params.ts","../../../projects/ng-azure-maps/src/lib/helpers/token-credential.ts","../../../projects/ng-azure-maps/src/lib/interceptors/atlas-rest-authentication.interceptor.ts","../../../projects/ng-azure-maps/src/lib/modules/ng-azure-maps-module.ts","../../../projects/ng-azure-maps/src/lib/services/pipeline-provider.ts","../../../projects/ng-azure-maps/src/lib/services/atlas-http.service.ts","../../../projects/ng-azure-maps/src/lib/services/search-service.ts","../../../projects/ng-azure-maps/src/lib/services/route-service.ts","../../../projects/ng-azure-maps/src/lib/services/weather-service.ts","../../../projects/ng-azure-maps/src/ng-azure-maps.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AuthenticationOptions } from 'azure-maps-control';\nimport { IRetryOptions } from 'azure-maps-rest';\n\nexport const AZUREMAPS_CONFIG = new InjectionToken('AZUREMAPS_CONFIG');\n\n/**\n * Configuration of the Azure Maps\n */\nexport class AzureMapsConfiguration {\n  authOptions: AuthenticationOptions;\n  pipelineRetryOptions?: IRetryOptions;\n  domain?: string;\n}\n","import { Input, Directive } from '@angular/core';\nimport { ControlPosition, Map } from 'azure-maps-control';\n\n@Directive()\nexport abstract class ControlDirective {\n\n  @Input() public position: ControlPosition;\n\n  public abstract initialize(map: Map): void;\n\n}\n","import { Directive, Input } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { ControlDirective } from './control.directive';\n\n@Directive({\n    selector: '[map-zoom-control], map-zoom-control',\n    standalone: false\n})\nexport class ZoomControlDirective\n  extends ControlDirective {\n\n  @Input()\n  public zoomDelta: number;\n\n  @Input()\n  public controlStyle: atlas.ControlStyle;\n\n  public initialize(map: atlas.Map): void {\n    map.controls.add(new atlas.control.ZoomControl({\n      zoomDelta: this.zoomDelta,\n      style: this.controlStyle\n    }), {\n      position: this.position\n    });\n  }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { ControlDirective } from './control.directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-pitch-control], map-pitch-control',\n    standalone: false\n})\nexport class PitchControlDirective\n  extends ControlDirective {\n\n  @Input()\n  public pitchDegreesDelta: number;\n\n  @Input()\n  public controlStyle: atlas.ControlStyle;\n\n  public initialize(map: atlas.Map): void {\n    map.controls.add(new atlas.control.PitchControl({\n      pitchDegreesDelta: this.pitchDegreesDelta,\n      style: this.controlStyle\n    }), {\n      position: this.position\n    });\n  }\n\n}\n","import { ControlDirective } from './control.directive';\nimport { Directive, Input } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-compass-control], map-compass-control',\n    standalone: false\n})\nexport class CompassControlDirective\n  extends ControlDirective {\n\n  @Input()\n  public rotationDegreesDelta: number;\n\n  @Input()\n  public controlStyle: atlas.ControlStyle;\n\n  public initialize(map: atlas.Map): void {\n    map.controls.add(new atlas.control.CompassControl({\n      rotationDegreesDelta: this.rotationDegreesDelta,\n      style: this.controlStyle\n    }), {\n      position: this.position\n    });\n  }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { ControlDirective } from './control.directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-style-control], map-style-control',\n    standalone: false\n})\nexport class StyleControlDirective\n  extends ControlDirective {\n\n  @Input()\n  public layout: 'icons' | 'list';\n\n  @Input()\n  public mapStyles: string[] | 'all';\n\n  @Input()\n  public controlStyle: atlas.ControlStyle;\n\n  public initialize(map: atlas.Map): void {\n    map.controls.add(new atlas.control.StyleControl({\n      layout: this.layout,\n      mapStyles: this.mapStyles,\n      style: this.controlStyle\n    }), {\n      position: this.position\n    });\n  }\n\n}\n","import { Input, Directive, OnDestroy, OnChanges, Output } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { Subject } from 'rxjs';\nimport { IMarkerEvent } from '../../contracts';\n\n@Directive({\n    selector: '[map-html-marker], map-html-marker',\n    standalone: false\n})\nexport class HtmlMarkerDirective\n  implements OnChanges, OnDestroy {\n\n  private _map: atlas.Map;\n  private _marker: atlas.HtmlMarker;\n\n  private readonly _markerEvents = new Map<any, (e: any) => void>(\n    [\n      ['click', e => this.onClick.next(this.toMarkerEvent(e))],\n      ['contextmenu', e => this.onContextMenu.next(this.toMarkerEvent(e))],\n      ['dblclick', e => this.onDblClick.next(this.toMarkerEvent(e))],\n      ['drag', e => this.onDrag.next(this.toMarkerEvent(e))],\n      ['dragstart', e => this.onDragStart.next(this.toMarkerEvent(e))],\n      ['dragend', e => this.onDragEnd.next(this.toMarkerEvent(e))],\n      ['keydown', e => this.onKeyDown.next(this.toMarkerEvent(e))],\n      ['keypress', e => this.onKeyPress.next(this.toMarkerEvent(e))],\n      ['keyup', e => this.onKeyUp.next(this.toMarkerEvent(e))],\n      ['mousedown', e => this.onMouseDown.next(this.toMarkerEvent(e))],\n      ['mouseenter', e => this.onMouseEnter.next(this.toMarkerEvent(e))],\n      ['mouseleave', e => this.onMouseLeave.next(this.toMarkerEvent(e))],\n      ['mousemove', e => this.onMouseMove.next(this.toMarkerEvent(e))],\n      ['mouseout', e => this.onMouseOut.next(this.toMarkerEvent(e))],\n      ['mouseover', e => this.onMouseOver.next(this.toMarkerEvent(e))],\n      ['mouseup', e => this.onMouseUp.next(this.toMarkerEvent(e))]\n    ]\n  );\n\n  @Input() public anchor: string;\n  @Input() public color: string;\n  @Input() public draggable: boolean;\n  @Input() public htmlContent: string | HTMLElement;\n  @Input() public pixelOffset: atlas.Pixel;\n  @Input() public position: atlas.data.Position;\n  @Input() public secondaryColor: string;\n  @Input() public text: string;\n  @Input() public visible: boolean;\n\n  @Input() public marker: atlas.HtmlMarker;\n\n  @Output() public onClick = new Subject<IMarkerEvent>();\n  @Output() public onContextMenu = new Subject<IMarkerEvent>();\n  @Output() public onDblClick = new Subject<IMarkerEvent>();\n  @Output() public onDrag = new Subject<IMarkerEvent>();\n  @Output() public onDragStart = new Subject<IMarkerEvent>();\n  @Output() public onDragEnd = new Subject<IMarkerEvent>();\n  @Output() public onKeyDown = new Subject<IMarkerEvent>();\n  @Output() public onKeyPress = new Subject<IMarkerEvent>();\n  @Output() public onKeyUp = new Subject<IMarkerEvent>();\n  @Output() public onMouseDown = new Subject<IMarkerEvent>();\n  @Output() public onMouseEnter = new Subject<IMarkerEvent>();\n  @Output() public onMouseLeave = new Subject<IMarkerEvent>();\n  @Output() public onMouseMove = new Subject<IMarkerEvent>();\n  @Output() public onMouseOut = new Subject<IMarkerEvent>();\n  @Output() public onMouseOver = new Subject<IMarkerEvent>();\n  @Output() public onMouseUp = new Subject<IMarkerEvent>();\n\n  public get hasMap(): boolean {\n    return !!this._map;\n  }\n\n  ngOnChanges() {\n    if (this._marker) {\n      this._marker.setOptions({\n        anchor: this.anchor,\n        color: this.color,\n        draggable: this.draggable,\n        htmlContent: this.htmlContent,\n        pixelOffset: this.pixelOffset,\n        position: this.position,\n        secondaryColor: this.secondaryColor,\n        text: this.text,\n        visible: this.visible\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._map && this._marker) {\n      this._map.markers.remove(this._marker);\n    }\n  }\n\n  public addToMap(map: atlas.Map) {\n    this._map = map;\n\n    this._marker = this.marker ? this.marker : new atlas.HtmlMarker({\n      anchor: this.anchor,\n      color: this.color,\n      draggable: this.draggable,\n      htmlContent: this.htmlContent,\n      pixelOffset: this.pixelOffset,\n      position: this.position,\n      secondaryColor: this.secondaryColor,\n      text: this.text,\n      visible: this.visible\n    });\n\n    this._markerEvents.forEach((value, key) => {\n      this._map.events.add(key, this._marker, value);\n    });\n\n    map.markers.add(this._marker);\n  }\n\n  private toMarkerEvent(e: any): IMarkerEvent {\n    return {\n      marker: this._marker,\n      event: e\n    };\n  }\n\n}\n","import { Directive, Input, OnChanges, OnDestroy, Output } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport * as atlasdrawing from 'azure-maps-drawing-tools';\nimport { Subject } from 'rxjs';\n\n@Directive({\n    selector: '[map-drawing-toolbar], map-drawing-toolbar',\n    standalone: false\n})\nexport class DrawingToolbarDirective\n  implements OnChanges, OnDestroy {\n\n  private _drawingManager: atlasdrawing.drawing.DrawingManager;\n  private _toolbar: atlasdrawing.control.DrawingToolbar;\n  private _map: atlas.Map;\n\n  @Input() public dragHandleStyle: atlas.HtmlMarkerOptions;\n  @Input() public freehandInterval: number;\n  @Input() public interactionType: atlasdrawing.drawing.DrawingInteractionType;\n  @Input() public mode: atlasdrawing.drawing.DrawingMode;\n  @Input() public secondaryDragHandleStyle: atlas.HtmlMarkerOptions;\n  @Input() public shapeDraggingEnabled: boolean;\n\n  @Input() public buttons: string[];\n  @Input() public containerId: string;\n  @Input() public numColumns: number;\n  @Input() public position: string;\n  @Input() public toolbarStyle: string;\n  @Input() public visible: boolean;\n\n  @Output() public drawingChanged = new Subject<atlas.Shape>();\n  @Output() public drawingChanging = new Subject<atlas.Shape>();\n  @Output() public drawingComplete = new Subject<atlas.Shape>();\n  @Output() public drawingModeChanged = new Subject<atlasdrawing.drawing.DrawingMode>();\n  @Output() public drawingStarted = new Subject<atlas.Shape>();\n\n  ngOnChanges(): void {\n    if (this._toolbar) {\n      this._toolbar.setOptions({\n        buttons: this.buttons,\n        containerId: this.containerId,\n        numColumns: this.numColumns,\n        position: this.position,\n        style: this.toolbarStyle,\n        visible: this.visible\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._map) {\n      this._map.events.remove('drawingchanged', this._drawingManager, null);\n      this._map.events.remove('drawingchanging', this._drawingManager, null);\n      this._map.events.remove('drawingcomplete', this._drawingManager, null);\n      this._map.events.remove('drawingmodechanged', this._drawingManager, null);\n      this._map.events.remove('drawingstarted', this._drawingManager, null);\n      this._map.controls.remove(this._toolbar);\n    }\n  }\n\n  public initialize(map: atlas.Map): void {\n    this._map = map;\n    this._toolbar = new atlasdrawing.control.DrawingToolbar({\n      buttons: this.buttons,\n      containerId: this.containerId,\n      numColumns: this.numColumns,\n      position: this.position,\n      style: this.toolbarStyle,\n      visible: this.visible\n    });\n    this._drawingManager = new atlasdrawing.drawing.DrawingManager(map, {\n      dragHandleStyle: this.dragHandleStyle,\n      freehandInterval: this.freehandInterval,\n      interactionType: this.interactionType,\n      mode: this.mode,\n      secondaryDragHandleStyle: this.secondaryDragHandleStyle,\n      shapeDraggingEnabled: this.shapeDraggingEnabled,\n      toolbar: this._toolbar\n    });\n\n    this._map.events.add('drawingchanged', this._drawingManager, e => {\n      this.drawingChanged.next(e);\n    });\n\n    this._map.events.add('drawingchanging', this._drawingManager, e => {\n      this.drawingChanging.next(e);\n    });\n\n    this._map.events.add('drawingcomplete', this._drawingManager, e => {\n      this.drawingComplete.next(e);\n    });\n\n    this._map.events.add('drawingmodechanged', this._drawingManager, e => {\n      this.drawingModeChanged.next(e);\n    });\n\n    this._map.events.add('drawingstarted', this._drawingManager, e => {\n      this.drawingStarted.next(e);\n    });\n  }\n\n  public getDatasource(): atlas.source.DataSource {\n    return this._drawingManager.getSource();\n  }\n\n  public getPreviewSource(): atlas.source.DataSource {\n    return (this._drawingManager as any).drawingHelper.previewSource;\n  }\n\n}\n","import * as atlas from 'azure-maps-control';\nimport { OnDestroy, Input, Output, Directive } from '@angular/core';\nimport { ILayerEvent } from '../../contracts';\nimport { Subject } from 'rxjs';\n\n@Directive()\nexport abstract class LayerDirective<T extends atlas.layer.Layer>\n  implements OnDestroy {\n\n  private readonly _layerEvents = new Map<any, (e: any) => void>(\n    [\n      ['click', e => this.onClick.next(this.toLayerEvent(this.layer, e))],\n      ['contextmenu', e => this.onContextMenu.next(this.toLayerEvent(this.layer, e))],\n      ['dblclick', e => this.onDblClick.next(this.toLayerEvent(this.layer, e))],\n      ['layeradded', e => this.onAdded.next(this.toLayerEvent(this.layer, e))],\n      ['layerremoved', e => this.onRemoved.next(this.toLayerEvent(this.layer, e))],\n      ['mousedown', e => this.onMouseDown.next(this.toLayerEvent(this.layer, e))],\n      ['mouseenter', e => this.onMouseEnter.next(this.toLayerEvent(this.layer, e))],\n      ['mouseleave', e => this.onMouseLeave.next(this.toLayerEvent(this.layer, e))],\n      ['mousemove', e => this.onMouseMove.next(this.toLayerEvent(this.layer, e))],\n      ['mouseout', e => this.onMouseOut.next(this.toLayerEvent(this.layer, e))],\n      ['mouseover', e => this.onMouseOver.next(this.toLayerEvent(this.layer, e))],\n      ['mouseup', e => this.onMouseUp.next(this.toLayerEvent(this.layer, e))],\n      ['touchcancel', e => this.onTouchCancel.next(this.toLayerEvent(this.layer, e))],\n      ['touchend', e => this.onTouchEnd.next(this.toLayerEvent(this.layer, e))],\n      ['touchmove', e => this.onTouchMove.next(this.toLayerEvent(this.layer, e))],\n      ['touchstart', e => this.onTouchStart.next(this.toLayerEvent(this.layer, e))],\n      ['wheel', e => this.onWheel.next(this.toLayerEvent(this.layer, e))],\n    ]\n  );\n\n  protected layer: T;\n\n  @Input() public id: string;\n  @Input() public before: string;\n\n  @Output() public onAdded = new Subject<ILayerEvent>();\n  @Output() public onClick = new Subject<ILayerEvent>();\n  @Output() public onContextMenu = new Subject<ILayerEvent>();\n  @Output() public onDblClick = new Subject<ILayerEvent>();\n  @Output() public onMouseDown = new Subject<ILayerEvent>();\n  @Output() public onMouseEnter = new Subject<ILayerEvent>();\n  @Output() public onMouseLeave = new Subject<ILayerEvent>();\n  @Output() public onMouseMove = new Subject<ILayerEvent>();\n  @Output() public onMouseOut = new Subject<ILayerEvent>();\n  @Output() public onMouseOver = new Subject<ILayerEvent>();\n  @Output() public onMouseUp = new Subject<ILayerEvent>();\n  @Output() public onRemoved = new Subject<ILayerEvent>();\n  @Output() public onTouchCancel = new Subject<ILayerEvent>();\n  @Output() public onTouchEnd = new Subject<ILayerEvent>();\n  @Output() public onTouchMove = new Subject<ILayerEvent>();\n  @Output() public onTouchStart = new Subject<ILayerEvent>();\n  @Output() public onWheel = new Subject<ILayerEvent>();\n\n  public get hasLayer(): boolean {\n    return !!this.layer;\n  }\n\n  ngOnDestroy(): void {\n    this.layer.getMap().layers.remove(this.layer);\n  }\n\n  protected initializeEvents(map: atlas.Map): void {\n    this._layerEvents.forEach((value, key) => {\n      map.events.add(key, this.layer, value);\n    });\n  }\n\n  private toLayerEvent(layer: atlas.layer.Layer | atlas.layer.Layer[], e: any): ILayerEvent {\n    return {\n      layer,\n      event: e\n    };\n  }\n}\n","import * as atlas from 'azure-maps-control';\nimport { OnDestroy, Input, Directive } from '@angular/core';\nimport { LayerDirective } from './layer-directive';\n\n@Directive()\nexport abstract class SourceLayerDirective<T extends atlas.layer.Layer>\n  extends LayerDirective<T>\n  implements OnDestroy {\n\n  @Input() public dataSourceId: string;\n  @Input() public sourceLayer: string;\n\n  public initialize(map: atlas.Map, dataSource: atlas.source.Source): void {\n    this.layer = this.buildLayer(dataSource);\n\n    this.initializeEvents(map);\n\n    map.layers.add(this.layer, this.before);\n  };\n\n  public clear(map: atlas.Map) {\n    map.layers.remove(this.layer);\n    this.layer = null;\n  }\n\n  protected abstract buildLayer(dataSource: atlas.source.Source): T;\n\n}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { SourceLayerDirective } from './source-layer-directive';\n\n@Directive({\n    selector: '[map-symbol-layer], map-symbol-layer',\n    standalone: false\n})\nexport class SymbolLayerDirective\n  extends SourceLayerDirective<atlas.layer.SymbolLayer>\n  implements OnChanges {\n\n  @Input() public filter: atlas.Expression;\n  @Input() public iconOptions: atlas.IconOptions;\n  @Input() public lineSpacing: atlas.Expression | number;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public placement: 'point' | 'line' | 'line-center';\n  @Input() public textOptions: atlas.TextOptions;\n  @Input() public visible: boolean;\n\n  ngOnChanges() {\n    if (this.layer) {\n      this.layer.setOptions({\n        filter: this.filter,\n        iconOptions: this.iconOptions,\n        lineSpacing: this.lineSpacing,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        placement: this.placement,\n        textOptions: this.textOptions,\n        visible: this.visible\n      });\n    }\n  }\n\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.SymbolLayer {\n    return new atlas.layer.SymbolLayer(dataSource, this.id, {\n      filter: this.filter,\n      iconOptions: this.iconOptions,\n      lineSpacing: this.lineSpacing,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      placement: this.placement,\n      textOptions: this.textOptions,\n      visible: this.visible\n    });\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport { SourceLayerDirective } from './source-layer-directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-bubble-layer], map-bubble-layer',\n    standalone: false\n})\nexport class BubbleLayerDirective\n  extends SourceLayerDirective<atlas.layer.BubbleLayer>\n  implements OnChanges {\n\n  @Input() public blur: number | atlas.Expression;\n  @Input() public color: string | atlas.Expression;\n  @Input() public filter: atlas.Expression;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public opacity: number | atlas.Expression;\n  @Input() public pitchAlignment: 'map' | 'viewport';\n  @Input() public radius: number | atlas.Expression;\n  @Input() public strokeColor: string | atlas.Expression;\n  @Input() public strokeOpacity: number | atlas.Expression;\n  @Input() public strokeWidth: number | atlas.Expression;\n  @Input() public visible: boolean;\n\n  ngOnChanges() {\n    if (this.layer) {\n      this.layer.setOptions({\n        blur: this.blur,\n        color: this.color,\n        filter: this.filter,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        opacity: this.opacity,\n        pitchAlignment: this.pitchAlignment,\n        radius: this.radius,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        strokeColor: this.strokeColor,\n        strokeOpacity: this.strokeOpacity,\n        strokeWidth: this.strokeWidth,\n        visible: this.visible\n      });\n    }\n  }\n\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.BubbleLayer {\n    return new atlas.layer.BubbleLayer(dataSource, this.id, {\n      blur: this.blur,\n      color: this.color,\n      filter: this.filter,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      opacity: this.opacity,\n      pitchAlignment: this.pitchAlignment,\n      radius: this.radius,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      strokeColor: this.strokeColor,\n      strokeOpacity: this.strokeOpacity,\n      strokeWidth: this.strokeWidth,\n      visible: this.visible\n    });\n  }\n\n}\n","import { SourceLayerDirective } from './source-layer-directive';\nimport * as atlas from 'azure-maps-control';\nimport { OnChanges, Input, Directive } from '@angular/core';\n\n@Directive({\n    selector: '[map-line-layer], map-line-layer',\n    standalone: false\n})\nexport class LineLayerDirective\n  extends SourceLayerDirective<atlas.layer.LineLayer>\n  implements OnChanges {\n\n  @Input() public blur: number | atlas.Expression;\n  @Input() public filter: atlas.Expression;\n  @Input() public lineCap: 'butt' | 'round' | 'square';\n  @Input() public lineJoin: 'bevel' | 'round' | 'miter';\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public offset: number | atlas.Expression;\n  @Input() public strokeColor: string | atlas.Expression;\n  @Input() public strokeDashArray: number[];\n  @Input() public strokeGradient: atlas.Expression;\n  @Input() public strokeOpacity: number | atlas.Expression;\n  @Input() public strokeWidth: number | atlas.Expression;\n  @Input() public translate: atlas.Pixel;\n  @Input() public translateAnchor: 'map' | 'viewport';\n  @Input() public visible: boolean;\n\n  ngOnChanges() {\n    if (this.layer) {\n      this.layer.setOptions({\n        blur: this.blur,\n        filter: this.filter,\n        lineCap: this.lineCap,\n        lineJoin: this.lineJoin,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        offset: this.offset,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        strokeColor: this.strokeColor,\n        strokeDashArray: this.strokeDashArray,\n        strokeGradient: this.strokeGradient,\n        strokeOpacity: this.strokeOpacity,\n        strokeWidth: this.strokeWidth,\n        translate: this.translate,\n        translateAnchor: this.translateAnchor,\n        visible: this.visible\n      });\n    }\n  }\n\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.LineLayer {\n    if (this.strokeGradient && (dataSource as any).setOptions) {\n      (dataSource as atlas.source.DataSource).setOptions({\n        lineMetrics: true\n      });\n    }\n\n    return new atlas.layer.LineLayer(dataSource, this.id, {\n      blur: this.blur,\n      filter: this.filter,\n      lineCap: this.lineCap,\n      lineJoin: this.lineJoin,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      offset: this.offset,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      strokeColor: this.strokeColor,\n      strokeDashArray: this.strokeDashArray,\n      strokeGradient: this.strokeGradient,\n      strokeOpacity: this.strokeOpacity,\n      strokeWidth: this.strokeWidth,\n      translate: this.translate,\n      translateAnchor: this.translateAnchor,\n      visible: this.visible\n    });\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport { SourceLayerDirective } from './source-layer-directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-polygon-layer], map-polygon-layer',\n    standalone: false\n})\nexport class PolygonLayerDirective\n  extends SourceLayerDirective<atlas.layer.PolygonLayer>\n  implements OnChanges {\n\n  @Input() public fillColor: string | atlas.Expression;\n  @Input() public fillOpacity: number | atlas.Expression;\n  @Input() public fillPattern: string | atlas.Expression;\n  @Input() public filter: atlas.Expression;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public visible: boolean;\n\n  ngOnChanges() {\n    if (this.layer) {\n      this.layer.setOptions({\n        fillColor: this.fillColor,\n        fillOpacity: this.fillOpacity,\n        fillPattern: this.fillPattern,\n        filter: this.filter,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        visible: this.visible\n      });\n    }\n  }\n\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.PolygonLayer {\n    return new atlas.layer.PolygonLayer(dataSource, this.id, {\n      fillColor: this.fillColor,\n      fillOpacity: this.fillOpacity,\n      fillPattern: this.fillPattern,\n      filter: this.filter,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      visible: this.visible\n    });\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { SourceLayerDirective } from './source-layer-directive';\n\n@Directive({\n    selector: '[map-polygon-extrusion-layer], map-polygon-extrusion-layer',\n    standalone: false\n})\nexport class PolygonExtrusionLayerDirective\n  extends SourceLayerDirective<atlas.layer.PolygonExtrusionLayer>\n  implements OnChanges {\n\n  @Input() public base: number | atlas.Expression;\n  @Input() public fillColor: string | atlas.Expression;\n  @Input() public fillOpacity: number;\n  @Input() public fillPattern: string;\n  @Input() public filter: atlas.Expression;\n  @Input() public height: number;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public translate: atlas.Pixel;\n  @Input() public translateAnchor: 'map' | 'viewport';\n  @Input() public verticalGradient: boolean;\n  @Input() public visible: boolean;\n\n  ngOnChanges() {\n    if (this.layer) {\n      this.layer.setOptions({\n        base: this.base,\n        fillColor: this.fillColor,\n        fillOpacity: this.fillOpacity,\n        fillPattern: this.fillPattern,\n        filter: this.filter,\n        height: this.height,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        translate: this.translate,\n        translateAnchor: this.translateAnchor,\n        verticalGradient: this.verticalGradient,\n        visible: this.visible\n      });\n    }\n  }\n\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.PolygonExtrusionLayer {\n    return new atlas.layer.PolygonExtrusionLayer(dataSource, this.id, {\n      base: this.base,\n      fillColor: this.fillColor,\n      fillOpacity: this.fillOpacity,\n      fillPattern: this.fillPattern,\n      filter: this.filter,\n      height: this.height,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      translate: this.translate,\n      translateAnchor: this.translateAnchor,\n      verticalGradient: this.verticalGradient,\n      visible: this.visible\n    });\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport { SourceLayerDirective } from './source-layer-directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-heatmap-layer], map-heatmap-layer',\n    standalone: false\n})\nexport class HeatmapLayerDirective\n  extends SourceLayerDirective<atlas.layer.HeatMapLayer>\n  implements OnChanges {\n\n  @Input() public color: atlas.Expression;\n  @Input() public filter: atlas.Expression;\n  @Input() public intensity: number | atlas.Expression;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public opacity: number | atlas.Expression;\n  @Input() public radius: number | atlas.Expression;\n  @Input() public visible: boolean;\n  @Input() public weight: number | atlas.Expression;\n\n  ngOnChanges(): void {\n    if (this.layer) {\n      this.layer.setOptions({\n        color: this.color,\n        filter: this.filter,\n        intensity: this.intensity,\n        maxZoom: this.maxZoom,\n        minZoom: this.minZoom,\n        opacity: this.opacity,\n        radius: this.radius,\n        source: this.dataSourceId,\n        sourceLayer: this.sourceLayer,\n        visible: this.visible,\n        weight: this.weight\n      });\n    }\n  }\n  protected buildLayer(dataSource: atlas.source.Source): atlas.layer.HeatMapLayer {\n    return new atlas.layer.HeatMapLayer(dataSource, this.id, {\n      color: this.color,\n      filter: this.filter,\n      intensity: this.intensity,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      opacity: this.opacity,\n      radius: this.radius,\n      source: this.dataSourceId,\n      sourceLayer: this.sourceLayer,\n      visible: this.visible,\n      weight: this.weight\n    });\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { LayerDirective } from './layer-directive';\n\n@Directive({\n    selector: '[map-image-layer], map-image-layer',\n    standalone: false\n})\nexport class ImageLayerDirective\n  extends LayerDirective<atlas.layer.ImageLayer>\n  implements OnChanges {\n\n  @Input() public contrast: number;\n  @Input() public coordinates: atlas.data.Position[];\n  @Input() public fadeDuration: number;\n  @Input() public filter: atlas.Expression;\n  @Input() public hueRotation: number;\n  @Input() public maxBrightness: number;\n  @Input() public maxZoom: number;\n  @Input() public minBrightness: number;\n  @Input() public minZoom: number;\n  @Input() public opacity: number;\n  @Input() public saturation: number;\n  @Input() public url: string;\n  @Input() public visible: boolean;\n\n  ngOnChanges(): void {\n    if (this.layer) {\n      this.layer.setOptions({\n        contrast: this.contrast,\n        coordinates: this.coordinates,\n        fadeDuration: this.fadeDuration,\n        filter: this.filter,\n        hueRotation: this.hueRotation,\n        maxBrightness: this.maxBrightness,\n        maxZoom: this.maxZoom,\n        minBrightness: this.minBrightness,\n        minZoom: this.minZoom,\n        opacity: this.opacity,\n        saturation: this.saturation,\n        url: this.url,\n        visible: this.visible\n      });\n    }\n  }\n\n  public initialize(map: atlas.Map): void {\n    this.layer = new atlas.layer.ImageLayer({\n      contrast: this.contrast,\n      coordinates: this.coordinates,\n      fadeDuration: this.fadeDuration,\n      filter: this.filter,\n      hueRotation: this.hueRotation,\n      maxBrightness: this.maxBrightness,\n      maxZoom: this.maxZoom,\n      minBrightness: this.minBrightness,\n      minZoom: this.minZoom,\n      opacity: this.opacity,\n      saturation: this.saturation,\n      url: this.url,\n      visible: this.visible\n    });\n\n    this.initializeEvents(map);\n\n    map.layers.add(this.layer, this.before);\n  }\n\n}\n","import { Directive, OnChanges, Input } from '@angular/core';\nimport { LayerDirective } from './layer-directive';\nimport * as atlas from 'azure-maps-control';\n\n@Directive({\n    selector: '[map-tile-layer], map-tile-layer',\n    standalone: false\n})\nexport class TileLayerDirective\n  extends LayerDirective<atlas.layer.TileLayer>\n  implements OnChanges {\n\n  @Input() public bounds: atlas.data.BoundingBox;\n  @Input() public contrast: number;\n  @Input() public fadeDuration: number;\n  @Input() public filter: atlas.Expression;\n  @Input() public hueRotation: number;\n  @Input() public isTMS: boolean;\n  @Input() public maxBrightness: number;\n  @Input() public maxSourceZoom: number;\n  @Input() public maxZoom: number;\n  @Input() public minBrightness: number;\n  @Input() public minSourceZoom: number;\n  @Input() public minZoom: number;\n  @Input() public opacity: number;\n  @Input() public saturation: number;\n  @Input() public subdomains: string[];\n  @Input() public tileSize: number;\n  @Input() public tileUrl: string;\n  @Input() public visible: boolean;\n\n  ngOnChanges(): void {\n    if (this.layer) {\n      this.layer.setOptions({\n        bounds: this.bounds,\n        contrast: this.contrast,\n        fadeDuration: this.fadeDuration,\n        filter: this.filter,\n        hueRotation: this.hueRotation,\n        isTMS: this.isTMS,\n        maxBrightness: this.maxBrightness,\n        maxSourceZoom: this.maxSourceZoom,\n        maxZoom: this.maxZoom,\n        minBrightness: this.minBrightness,\n        minSourceZoom: this.minSourceZoom,\n        minZoom: this.minZoom,\n        opacity: this.opacity,\n        saturation: this.saturation,\n        subdomains: this.subdomains,\n        tileSize: this.tileSize,\n        tileUrl: this.tileUrl,\n        visible: this.visible\n      });\n    }\n  }\n\n  public initialize(map: atlas.Map): void {\n    this.layer = new atlas.layer.TileLayer({\n      bounds: this.bounds,\n      contrast: this.contrast,\n      fadeDuration: this.fadeDuration,\n      filter: this.filter,\n      hueRotation: this.hueRotation,\n      isTMS: this.isTMS,\n      maxBrightness: this.maxBrightness,\n      maxSourceZoom: this.maxSourceZoom,\n      maxZoom: this.maxZoom,\n      minBrightness: this.minBrightness,\n      minSourceZoom: this.minSourceZoom,\n      minZoom: this.minZoom,\n      opacity: this.opacity,\n      saturation: this.saturation,\n      subdomains: this.subdomains,\n      tileSize: this.tileSize,\n      tileUrl: this.tileUrl,\n      visible: this.visible\n    }, this.id);\n\n    this.initializeEvents(map);\n\n    map.layers.add(this.layer, this.before);\n  }\n\n}\n","import { Input, Directive, OnDestroy, SimpleChanges, OnChanges, Output } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { IPopupEvent } from '../../contracts/popup-event';\nimport { Subject } from 'rxjs';\n\n@Directive({\n    selector: '[map-popup], map-popup',\n    standalone: false\n})\nexport class PopupDirective\n  implements OnChanges, OnDestroy {\n\n  private _map: atlas.Map;\n  private _popup: atlas.Popup;\n\n  private readonly _popupEvents = new Map<any, (e: any) => void>(\n    [\n      ['close', e => this.onClose.next(this.toPopupEvent(e))],\n      ['drag', e => this.onDrag.next(this.toPopupEvent(e))],\n      ['dragend', e => this.onDragEnd.next(this.toPopupEvent(e))],\n      ['dragstart', e => this.onDragStart.next(this.toPopupEvent(e))],\n      ['open', e => this.onOpen.next(this.toPopupEvent(e))],\n    ]\n  );\n\n  @Input() public opened: boolean;\n\n  @Input() public closeButton: boolean;\n  @Input() public content: HTMLElement | string;\n  @Input() public draggable: boolean;\n  @Input() public fillColor: string;\n  @Input() public pixelOffset: atlas.Pixel;\n  @Input() public position: atlas.data.Position;\n  @Input() public showPointer: boolean;\n\n  @Output() public onClose = new Subject<IPopupEvent>();\n  @Output() public onDrag = new Subject<IPopupEvent>();\n  @Output() public onDragEnd = new Subject<IPopupEvent>();\n  @Output() public onDragStart = new Subject<IPopupEvent>();\n  @Output() public onOpen = new Subject<IPopupEvent>();\n\n  public get hasMap(): boolean {\n    return !!this._map;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this._popup) {\n      this._popup.setOptions({\n        closeButton: this.closeButton,\n        content: this.content,\n        draggable: this.draggable,\n        fillColor: this.fillColor,\n        pixelOffset: this.pixelOffset,\n        position: this.position,\n        showPointer: this.showPointer\n      });\n\n      if (changes.opened) {\n        if (changes.opened.currentValue && !this._popup.isOpen()) {\n          this._popup.open(this._map);\n        }\n        if (!changes.opened.currentValue && this._popup.isOpen()) {\n          this._popup.close();\n        }\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._map) {\n      this._map.popups.remove(this._popup);\n    }\n  }\n\n  public addToMap(map: atlas.Map) {\n    this._map = map;\n    this._popup = new atlas.Popup({\n      closeButton: this.closeButton,\n      content: this.content,\n      draggable: this.draggable,\n      fillColor: this.fillColor,\n      pixelOffset: this.pixelOffset,\n      position: this.position,\n      showPointer: this.showPointer\n    });\n\n    this._popupEvents.forEach((value, key) => {\n      this._map.events.add(key, this._popup, value);\n    });\n\n    map.popups.add(this._popup);\n  }\n\n  private toPopupEvent(e: any): IPopupEvent {\n    return {\n      popup: this._popup,\n      event: e\n    };\n  }\n}\n","import {\n  Directive,\n  AfterViewInit,\n  ElementRef,\n  Input,\n  Output,\n  ContentChild,\n  QueryList,\n  AfterContentChecked,\n  ContentChildren,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as atlas from 'azure-maps-control';\nimport { ZoomControlDirective } from '../controls/zoom-control.directive';\nimport { PitchControlDirective } from '../controls/pitch-control.directive';\nimport { CompassControlDirective } from '../controls/compass-control.directive';\nimport { StyleControlDirective } from '../controls/style-control.directive';\nimport { HtmlMarkerDirective } from '../markers/html-marker.directive';\nimport { DrawingToolbarDirective } from '../drawing/drawing-toolbar.directive';\nimport { SymbolLayerDirective } from '../layers/symbol-layer.directive';\nimport { BubbleLayerDirective } from '../layers/bubble-layer.directive';\nimport { SourceLayerDirective } from '../layers/source-layer-directive';\nimport { LineLayerDirective } from '../layers/line-layer.directive';\nimport { PolygonLayerDirective } from '../layers/polygon-layer.directive';\nimport { PolygonExtrusionLayerDirective } from '../layers/polygon-extrusion-layer.directive';\nimport { HeatmapLayerDirective } from '../layers/heatmap-layer.directive';\nimport { ImageLayerDirective } from '../layers/image-layer.directive';\nimport { TileLayerDirective } from '../layers/tile-layer.directive';\nimport { IMapEvent } from '../../contracts';\nimport { PopupDirective } from '../popups/popup.directive';\n\n@Directive({\n    selector: '[azure-map], azure-map',\n    queries: {\n        zoomControl: new ContentChild(ZoomControlDirective),\n        pitchControl: new ContentChild(PitchControlDirective),\n        compassControl: new ContentChild(CompassControlDirective),\n        styleControl: new ContentChild(StyleControlDirective),\n        htmlMarkers: new ContentChildren(HtmlMarkerDirective),\n        drawingToolbar: new ContentChild(DrawingToolbarDirective),\n        symbolLayers: new ContentChildren(SymbolLayerDirective),\n        bubbleLayers: new ContentChildren(BubbleLayerDirective),\n        lineLayers: new ContentChildren(LineLayerDirective),\n        polygonLayers: new ContentChildren(PolygonLayerDirective),\n        polygonExtrusionLayers: new ContentChildren(PolygonExtrusionLayerDirective),\n        heatmapLayers: new ContentChildren(HeatmapLayerDirective),\n        imageLayers: new ContentChildren(ImageLayerDirective),\n        tileLayers: new ContentChildren(TileLayerDirective),\n        popups: new ContentChildren(PopupDirective)\n    },\n    standalone: false\n})\nexport class AzureMapDirective\n  implements AfterViewInit, AfterContentChecked, OnChanges {\n\n  private readonly _mapEvents = new Map<any, (e: any) => void>(\n    [\n      ['boxzoomend', e => this.onBoxZoomEnd.next(this.toMapEvent(e))],\n      ['boxzoomstart', e => this.onBoxZoomStart.next(this.toMapEvent(e))],\n      ['click', e => this.onClick.next(this.toMapEvent(e))],\n      ['contextmenu', e => this.onContextMenu.next(this.toMapEvent(e))],\n      ['data', e => this.onData.next(this.toMapEvent(e))],\n      ['dblclick', e => this.onDblClick.next(this.toMapEvent(e))],\n      ['drag', e => this.onDrag.next(this.toMapEvent(e))],\n      ['dragend', e => this.onDragEnd.next(this.toMapEvent(e))],\n      ['dragstart', e => this.onDragStart.next(this.toMapEvent(e))],\n      ['idle', e => this.onIdle.next(this.toMapEvent(e))],\n      ['layeradded', e => this.onLayerAdded.next(this.toMapEvent(e))],\n      ['layerremoved', e => this.onLayerRemoved.next(this.toMapEvent(e))],\n      ['mousedown', e => this.onMouseDown.next(this.toMapEvent(e))],\n      ['mouseleave', e => this.onMouseLeave.next(this.toMapEvent(e))],\n      ['mousemove', e => this.onMouseMove.next(this.toMapEvent(e))],\n      ['mouseout', e => this.onMouseOut.next(this.toMapEvent(e))],\n      ['mouseover', e => this.onMouseOver.next(this.toMapEvent(e))],\n      ['mouseup', e => this.onMouseUp.next(this.toMapEvent(e))],\n      ['move', e => this.onMove.next(this.toMapEvent(e))],\n      ['moveend', e => this.onMoveEnd.next(this.toMapEvent(e))],\n      ['movestart', e => this.onMoveStart.next(this.toMapEvent(e))],\n      ['pitch', e => this.onPitch.next(this.toMapEvent(e))],\n      ['pitchend', e => this.onPitchEnd.next(this.toMapEvent(e))],\n      ['pitchstart', e => this.onPitchStart.next(this.toMapEvent(e))],\n      ['render', e => this.onRender.next(this.toMapEvent(e))],\n      ['resize', e => this.onResize.next(this.toMapEvent(e))],\n      ['rotate', e => this.onRotate.next(this.toMapEvent(e))],\n      ['rotateend', e => this.onRotateEnd.next(this.toMapEvent(e))],\n      ['rotatestart', e => this.onRotateStart.next(this.toMapEvent(e))],\n      ['sourceadded', e => this.onSourceAdded.next(this.toMapEvent(e))],\n      ['sourcedata', e => this.onSourceData.next(this.toMapEvent(e))],\n      ['sourceremoved', e => this.onSourceRemoved.next(this.toMapEvent(e))],\n      ['styledata', e => this.onStyleData.next(this.toMapEvent(e))],\n      ['styleimagemissing', e => this.onStyleImageMissing.next(this.toMapEvent(e))],\n      ['tokenacquired', e => this.onTokenAcquired.next(this.toMapEvent(e))],\n      ['touchcancel', e => this.onTouchCancel.next(this.toMapEvent(e))],\n      ['touchend', e => this.onTouchEnd.next(this.toMapEvent(e))],\n      ['touchmove', e => this.onTouchMove.next(this.toMapEvent(e))],\n      ['touchstart', e => this.onTouchStart.next(this.toMapEvent(e))],\n      ['wheel', e => this.onWheel.next(this.toMapEvent(e))],\n      ['zoom', e => this.onZoom.next(this.toMapEvent(e))],\n      ['zoomend', e => this.onZoomEnd.next(this.toMapEvent(e))],\n      ['zoomstart', e => this.onZoomStart.next(this.toMapEvent(e))]\n    ]\n  );\n\n  private _map: atlas.Map;\n\n  @Input() public autoResize: boolean;\n  @Input() public bearing: number;\n  @Input() public bounds: [number, number, number, number];\n  @Input() public boxZoomInteraction: boolean;\n  @Input() public cameraType: 'jump' | 'ease' | 'fly';\n  @Input() public center: [number, number];\n  @Input() public centerOffset: [number, number];\n  @Input() public cursor: string;\n  @Input() public dblclickZoomInteraction: boolean;\n  @Input() public disableTelemetry: boolean;\n  @Input() public duration: number;\n  @Input() public dragPanInteraction: boolean;\n  @Input() public dragRotateInteraction: boolean;\n  @Input() public enableAccessibility: boolean;\n  @Input() public interactive: boolean;\n  @Input() public keyboardInteraction: boolean;\n  @Input() public language: string;\n  @Input() public light: atlas.LightOptions;\n  @Input() public maxBounds: atlas.data.BoundingBox;\n  @Input() public maxZoom: number;\n  @Input() public minZoom: number;\n  @Input() public offset: [number, number];\n  @Input() public padding: { top: 0; bottom: 0; left: 0; right: 0 };\n  @Input() public preserveDrawingBuffer: boolean;\n  @Input() public pitch: number;\n  @Input() public refreshExpiredTiles: boolean;\n  @Input() public renderWorldCopies: boolean;\n  @Input() public scrollZoomInteraction: boolean;\n  @Input() public mapStyle: string;\n  @Input() public showBuildingModels: boolean;\n  @Input() public showFeedbackLink: boolean;\n  @Input() public showLogo: boolean;\n  @Input() public showTilesBoundary: boolean;\n  @Input() public touchInteraction: boolean;\n  @Input() public view: string;\n  @Input() public wheelZoomRate: number;\n  @Input() public zoom: number;\n\n  @Input() public dataSources: atlas.source.Source[];\n\n  @Input() public trafficOptions: atlas.TrafficOptions;\n\n  @Output() public onBoxZoomEnd = new Subject<IMapEvent>();\n  @Output() public onBoxZoomStart = new Subject<IMapEvent>();\n  @Output() public onClick = new Subject<IMapEvent>();\n  @Output() public onContextMenu = new Subject<IMapEvent>();\n  @Output() public onData = new Subject<IMapEvent>();\n  @Output() public onDblClick = new Subject<IMapEvent>();\n  @Output() public onDrag = new Subject<IMapEvent>();\n  @Output() public onDragEnd = new Subject<IMapEvent>();\n  @Output() public onDragStart = new Subject<IMapEvent>();\n  @Output() public onError = new Subject<IMapEvent>();\n  @Output() public onIdle = new Subject<IMapEvent>();\n  @Output() public onLayerAdded = new Subject<IMapEvent>();\n  @Output() public onLayerRemoved = new Subject<IMapEvent>();\n  @Output() public onLoad = new Subject<IMapEvent>();\n  @Output() public onMouseDown = new Subject<IMapEvent>();\n  @Output() public onMouseLeave = new Subject<IMapEvent>();\n  @Output() public onMouseMove = new Subject<IMapEvent>();\n  @Output() public onMouseOut = new Subject<IMapEvent>();\n  @Output() public onMouseOver = new Subject<IMapEvent>();\n  @Output() public onMouseUp = new Subject<IMapEvent>();\n  @Output() public onMove = new Subject<IMapEvent>();\n  @Output() public onMoveEnd = new Subject<IMapEvent>();\n  @Output() public onMoveStart = new Subject<IMapEvent>();\n  @Output() public onPitch = new Subject<IMapEvent>();\n  @Output() public onPitchEnd = new Subject<IMapEvent>();\n  @Output() public onPitchStart = new Subject<IMapEvent>();\n  @Output() public onReady = new Subject<IMapEvent>();\n  @Output() public onRender = new Subject<IMapEvent>();\n  @Output() public onResize = new Subject<IMapEvent>();\n  @Output() public onRotate = new Subject<IMapEvent>();\n  @Output() public onRotateEnd = new Subject<IMapEvent>();\n  @Output() public onRotateStart = new Subject<IMapEvent>();\n  @Output() public onSourceAdded = new Subject<IMapEvent>();\n  @Output() public onSourceData = new Subject<IMapEvent>();\n  @Output() public onSourceRemoved = new Subject<IMapEvent>();\n  @Output() public onStyleData = new Subject<IMapEvent>();\n  @Output() public onStyleImageMissing = new Subject<IMapEvent>();\n  @Output() public onTokenAcquired = new Subject<IMapEvent>();\n  @Output() public onTouchCancel = new Subject<IMapEvent>();\n  @Output() public onTouchEnd = new Subject<IMapEvent>();\n  @Output() public onTouchMove = new Subject<IMapEvent>();\n  @Output() public onTouchStart = new Subject<IMapEvent>();\n  @Output() public onWheel = new Subject<IMapEvent>();\n  @Output() public onZoom = new Subject<IMapEvent>();\n  @Output() public onZoomEnd = new Subject<IMapEvent>();\n  @Output() public onZoomStart = new Subject<IMapEvent>();\n\n  public zoomControl: ZoomControlDirective;\n  public pitchControl: PitchControlDirective;\n  public compassControl: CompassControlDirective;\n  public styleControl: StyleControlDirective;\n\n  public htmlMarkers: QueryList<HtmlMarkerDirective>;\n\n  public drawingToolbar: DrawingToolbarDirective;\n\n  public symbolLayers: QueryList<SymbolLayerDirective>;\n  public bubbleLayers: QueryList<BubbleLayerDirective>;\n  public lineLayers: QueryList<LineLayerDirective>;\n  public polygonLayers: QueryList<PolygonLayerDirective>;\n  public polygonExtrusionLayers: QueryList<PolygonExtrusionLayerDirective>;\n  public heatmapLayers: QueryList<HeatmapLayerDirective>;\n  public imageLayers: QueryList<ImageLayerDirective>;\n  public tileLayers: QueryList<TileLayerDirective>;\n\n  public popups: QueryList<PopupDirective>;\n\n  private get sourceLayers(): SourceLayerDirective<atlas.layer.Layer>[] {\n    const result = [];\n    if (this.symbolLayers.length > 0) {\n      result.push(...this.symbolLayers.toArray());\n    }\n\n    if (this.bubbleLayers.length > 0) {\n      result.push(...this.bubbleLayers.toArray());\n    }\n\n    if (this.lineLayers.length > 0) {\n      result.push(...this.lineLayers.toArray());\n    }\n\n    if (this.polygonLayers.length > 0) {\n      result.push(...this.polygonLayers.toArray());\n    }\n\n    if (this.polygonExtrusionLayers.length > 0) {\n      result.push(...this.polygonExtrusionLayers.toArray());\n    }\n\n    if (this.heatmapLayers.length > 0) {\n      result.push(...this.heatmapLayers.toArray());\n    }\n\n    return result;\n  }\n\n  ngAfterViewInit(): void {\n    const map = new atlas.Map(this.elementRef.nativeElement, {\n      disableTelemetry: this.disableTelemetry,\n      enableAccessibility: this.enableAccessibility,\n      refreshExpiredTiles: this.refreshExpiredTiles\n    } as atlas.ServiceOptions);\n\n    map.events.add('error', e => {\n      this.onError.next({\n        event: e,\n        map\n      });\n    });\n\n    map.events.addOnce('ready', e => {\n      this._map = map;\n\n      this.setOptions();\n\n      this.onReady.next(this.toMapEvent(e));\n\n      this._mapEvents.forEach((value, key) => {\n        this._map.events.add(key, value);\n      });\n\n      if (this.zoomControl) {\n        this.zoomControl.initialize(this._map);\n      }\n\n      if (this.pitchControl) {\n        this.pitchControl.initialize(this._map);\n      }\n\n      if (this.compassControl) {\n        this.compassControl.initialize(this._map);\n      }\n\n      if (this.styleControl) {\n        this.styleControl.initialize(this._map);\n      }\n\n      if (this.drawingToolbar) {\n        this.drawingToolbar.initialize(this._map);\n      }\n\n      this.updateDataSources();\n    });\n\n    map.events.addOnce('load', e => {\n      if (this.cursor) {\n        this._map.getCanvasContainer().style.cursor = this.cursor;\n      }\n      this.onLoad.next(this.toMapEvent(e));\n    });\n\n  }\n\n  ngAfterContentChecked() {\n    if (this._map) {\n      if (this.htmlMarkers) {\n        for (const marker of this.htmlMarkers.filter(m => !m.hasMap)) {\n          marker.addToMap(this._map);\n        }\n      }\n\n      if (this.sourceLayers.length > 0 && this.dataSources) {\n        for (const layer of this.sourceLayers.filter(l => !l.hasLayer)) {\n          const dataSource = this.dataSources.find(d => d && d.getId() === layer.dataSourceId);\n          if (dataSource) {\n            layer.initialize(this._map, dataSource);\n          }\n        }\n      }\n\n      if (this.imageLayers.length > 0) {\n        for (const layer of this.imageLayers.filter(l => !l.hasLayer)) {\n          layer.initialize(this._map);\n        }\n      }\n\n      if (this.tileLayers.length > 0) {\n        for (const layer of this.tileLayers.filter(l => !l.hasLayer)) {\n          layer.initialize(this._map);\n        }\n      }\n\n      if (this.popups) {\n        for (const popup of this.popups.filter(m => !m.hasMap)) {\n          popup.addToMap(this._map);\n        }\n      }\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this._map) {\n      this.setOptions();\n\n      if (changes.dataSources) {\n        this.updateDataSources();\n      }\n\n      if (changes.cursor) {\n        this._map.getCanvasContainer().style.cursor = this.cursor;\n      }\n    }\n  }\n\n  constructor(private readonly elementRef: ElementRef) {\n\n  }\n\n  private updateDataSources(): void {\n\n    let drawingToolbarSourceId = null;\n    let previewToolbarSourceId = null;\n    if (this.drawingToolbar) {\n      drawingToolbarSourceId = this.drawingToolbar.getDatasource().getId();\n      previewToolbarSourceId = this.drawingToolbar.getPreviewSource().getId();\n    }\n\n    const mapSources = this._map.sources.getSources()\n      .filter(s =>\n        s.getId() !== 'vectorTiles'\n        && s.getId() !== 'incidents-source'\n        && (drawingToolbarSourceId && s.getId() !== drawingToolbarSourceId)\n        && (previewToolbarSourceId && s.getId() !== previewToolbarSourceId))\n      .map(s => s.getId());\n\n    if ((!this.dataSources || this.dataSources.length === 0) && (mapSources && mapSources.length > 0)) {\n      this._map.sources.clear();\n    } else if (this.dataSources) {\n      const dataSourcesToAdd = this.dataSources.filter(ds => ds && !this._map.sources.getById(ds.getId()));\n      const dataSourcesToRemove = mapSources.filter(id => !this.dataSources.find(s => s && s.getId() === id));\n\n      this._map.sources.add(dataSourcesToAdd);\n\n      for (const sourceId of dataSourcesToRemove) {\n        const layer = this.sourceLayers.find(l => sourceId && l.dataSourceId === sourceId);\n        if (layer) {\n          layer.clear(this._map);\n        }\n      }\n\n      this._map.sources.remove(dataSourcesToRemove);\n    }\n  }\n\n  private setOptions(): void {\n    const cameraOptions: (atlas.CameraOptions | atlas.CameraBoundsOptions) & atlas.AnimationOptions = {\n      bearing: this.bearing,\n      centerOffset: this.centerOffset,\n      duration: this.duration,\n      maxZoom: this.maxZoom,\n      minZoom: this.minZoom,\n      pitch: this.pitch,\n      type: this.cameraType\n    };\n\n    if (this.bounds) {\n      cameraOptions.bounds = this.bounds;\n      cameraOptions.maxBounds = this.maxBounds;\n      cameraOptions.offset = this.offset;\n      cameraOptions.padding = this.padding;\n    } else {\n      cameraOptions.center = this.center;\n      cameraOptions.zoom = this.zoom;\n    }\n\n    this._map.setCamera(cameraOptions);\n\n    this._map.setStyle({\n      autoResize: this.autoResize,\n      language: this.language,\n      light: this.light,\n      preserveDrawingBuffer: this.preserveDrawingBuffer,\n      renderWorldCopies: this.renderWorldCopies,\n      showBuildingModels: this.showBuildingModels,\n      showFeedbackLink: this.showFeedbackLink,\n      showLogo: this.showLogo,\n      showTileBoundaries: this.showTilesBoundary,\n      style: this.mapStyle,\n      view: this.view\n    });\n\n    this._map.setUserInteraction({\n      boxZoomInteraction: this.boxZoomInteraction,\n      dblclickZoomInteraction: this.dblclickZoomInteraction,\n      dragPanInteraction: this.dragPanInteraction,\n      dragRotateInteraction: this.dragRotateInteraction,\n      interactive: this.interactive,\n      keyboardInteraction: this.keyboardInteraction,\n      scrollZoomInteraction: this.scrollZoomInteraction,\n      touchInteraction: this.touchInteraction,\n      wheelZoomRate: this.wheelZoomRate\n    });\n\n    if (this.trafficOptions) {\n      this._map.setTraffic(this.trafficOptions);\n    }\n  }\n\n  private toMapEvent(e: any): IMapEvent {\n    return {\n      event: e,\n      map: this._map\n    };\n  }\n\n}\n","import * as atlas from 'azure-maps-control';\nimport { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchAddressOptionalParams {\n  /**\n   * Bottom right position of the bounding box. E.g. 37.553,-122.453\n   */\n  btmRight?: atlas.data.Position;\n  /**\n   * Country codes\n   */\n  countrySet?: string[];\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n  /**\n   * Latitude where results should be biased. E.g. 37.337\n   */\n  lat?: number;\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n  /**\n   * Longitude where results should be biased. E.g. -121.89\n   */\n  lon?: number;\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n  /**\n   * Top left position of the bounding box. E.g. 37.553,-122.453\n   */\n  topLeft?: atlas.data.Position;\n  /**\n   * If the typeahead flag is set, the query will be interpreted as a partial input and the search will enter predictive mode\n   */\n  typeahead?: boolean;\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchAddressOptionalParamsToQueryString = (params?: SearchAddressOptionalParams): string => {\n  if (!params) {\n    return '';\n  }\n\n  const queryStringParameters = [];\n  if (params.btmRight) {\n    queryStringParameters.push(`btmRight=${params.btmRight[0]},${params.btmRight[1]}`);\n  }\n\n  if (params.countrySet) {\n    queryStringParameters.push(`countrySet=${params.countrySet.join(',')}`);\n  }\n\n  if (params.extendedPostalCodesFor) {\n    queryStringParameters.push(`extendedPostalCodesFor=${params.extendedPostalCodesFor.map(pc => pc.toString()).join(',')}`);\n  }\n\n  if (params.language) {\n    queryStringParameters.push(`language=${params.language}`);\n  }\n\n  if (params.lat) {\n    queryStringParameters.push(`lat=${params.lat}`);\n  }\n\n  if (params.limit) {\n    queryStringParameters.push(`limit=${params.limit}`);\n  }\n\n  if (params.lon) {\n    queryStringParameters.push(`lon=${params.lon}`);\n  }\n\n  if (params.ofs) {\n    queryStringParameters.push(`ofs=${params.ofs}`);\n  }\n\n  if (params.radius) {\n    queryStringParameters.push(`radius=${params.radius}`);\n  }\n\n  if (params.topLeft) {\n    queryStringParameters.push(`topLeft=${params.topLeft[0]},${params.topLeft[1]}`);\n  }\n\n  if (params.typeahead !== null && params.typeahead !== undefined) {\n    queryStringParameters.push(`typeahead=${params.typeahead ? 1 : 0}`);\n  }\n\n  if (params.view) {\n    queryStringParameters.push(`view=${params.view}`);\n  }\n\n  return queryStringParameters.join('&');\n\n};\n","import * as atlasrest from 'azure-maps-rest';\n\nexport interface SearchAddressReverseOptionalParams {\n  /**\n   * Format of newlines in the formatted address.\n   * If true, the address will contain newlines. If false, newlines will be converted to commas.\n   */\n  allowFreeformNewline?: boolean;\n\n  /**\n   * Specifies the level of filtering performed on geographies. Narrows the search for specified geography entity types, e.g. return only municipality. The resulting response will contain the geography ID as well as the entity type matched. If you provide more than one entity as a comma separated list, endpoint will return the 'smallest entity available'. Returned Geometry ID can be used to get the geometry of that geography via Get Search Polygon API. The following parameters are ignored when entityType is set:\n   * heading\n   * number\n   * returnRoadUse\n   * returnSpeedLimit\n   * roadUse\n   * returnMatchType\n   */\n  entityType?: atlasrest.Models.EntityType;\n\n  /**\n   * The directional heading of the vehicle in degrees, for travel along a segment of roadway. 0 is North, 90 is East and so on, values range from -360 to 360. The precision can include upto one decimal place\n   */\n  heading?: number;\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * If a number is sent in along with the request, the response may include the side of the street (Left/Right) and also an offset position for that number\n   */\n  // eslint-disable-next-line id-blacklist\n  number?: number;\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   * Include information on the type of match the geocoder achieved in the response.\n   */\n  returnMatchType?: boolean;\n\n  /**\n   * To enable return of the road use array for reverse geocodes at street level\n   */\n  returnRoadUse?: boolean;\n\n  /**\n   * To enable return of the posted speed limit\n   */\n  returnSpeedLimit?: boolean;\n\n  /**\n   * To restrict reverse geocodes to a certain type of road use\n   */\n  roadUse?: RoadUse[];\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport enum RoadUse {\n  LimitedAccess = 'LimitedAccess',\n  Arterial = 'Arterial',\n  Terminal = 'Terminal',\n  Ramp = 'Ramp',\n  Rotary = 'Rotary',\n  LocalStreet = 'LocalStreet'\n}\n\nexport const searchAddressReverseOptionalParamsToQueryString = (options: SearchAddressReverseOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.allowFreeformNewline !== null && options.allowFreeformNewline !== undefined) {\n    queryParameters.push(`allowFreeformNewline=${options.allowFreeformNewline.toString()}`);\n  }\n\n  if (options.entityType) {\n    queryParameters.push(`entityType=${options.entityType.toString()}`);\n  }\n\n  if (options.heading) {\n    queryParameters.push(`heading=${options.heading}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.number) {\n    queryParameters.push(`number=${options.number}`);\n  }\n\n  if (options.radius) {\n    queryParameters.push(`radius=${options.radius}`);\n  }\n\n  if (options.returnMatchType !== null && options.returnMatchType !== undefined) {\n    queryParameters.push(`returnMatchType=${options.returnMatchType.toString()}`);\n  }\n\n  if (options.returnRoadUse !== null && options.returnRoadUse !== undefined) {\n    queryParameters.push(`returnRoadUse=${options.returnRoadUse.toString()}`);\n  }\n\n  if (options.returnSpeedLimit !== null && options.returnSpeedLimit !== undefined) {\n    queryParameters.push(`returnSpeedLimit=${options.returnSpeedLimit.toString()}`);\n  }\n\n  if (options.roadUse) {\n    queryParameters.push(`roadUse=${options.roadUse.join(',')}`);\n  }\n\n  return queryParameters.join('&');\n\n};\n","export interface SearchAddressReverseCrossStreetOptionalParams {\n\n  /**\n   * The directional heading of the vehicle in degrees, for travel along a segment of roadway. 0 is North, 90 is East and so on, values range from -360 to 360. The precision can include upto one decimal place\n   */\n  heading?: number;\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   *\nThe View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n\n}\n\nexport const searchAddressReverseCrossStreetOptionalParamsToQueryString\n  = (options?: SearchAddressReverseCrossStreetOptionalParams): string => {\n\n    if (!options) {\n      return '';\n    }\n\n    const queryParameters = [];\n\n    if (options.heading) {\n      queryParameters.push(`heading=${options.heading}`);\n    }\n\n    if (options.language) {\n      queryParameters.push(`language=${options.language}`);\n    }\n\n    if (options.limit) {\n      queryParameters.push(`limit=${options.limit}`);\n    }\n\n    if (options.radius) {\n      queryParameters.push(`radius=${options.radius}`);\n    }\n\n    if (options.view) {\n      queryParameters.push(`view=${options.view}`);\n    }\n\n    return queryParameters.join('&');\n\n  };\n","export enum ExtendedPostalCodes {\n  AddressRanges = 'Addr',\n  Geographies = 'Geo',\n  PointAddresses = 'PAD',\n  PointOfIntereset = 'POI',\n  Streets = 'Str',\n  CrossStreets = 'XStr'\n}\n","import { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchAddressStructuredOptionalParams {\n  /**\n   * The county for the structured address\n   */\n  countrySecondarySubdivision?: string;\n\n  /**\n   * The country subdivision portion of an address\n   */\n  countrySubdivision?: string;\n\n  /**\n   * The named area for the structured address\n   */\n  countryTertiarySubdivision: string;\n\n  /**\n   * The cross street name for the structured address\n   */\n  crossStreet?: string;\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * The municipality portion of an address\n   */\n  municipality?: string;\n\n  /**\n   * The municipality subdivision (sub/super city) for the structured address\n   */\n  municipalitySubdivision?: string;\n\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n\n  /**\n   * The postal code portion of an address\n   */\n  postalCode?: string;\n\n  /**\n   * \tThe street name portion of an address\n   */\n  streetName?: string;\n\n  /**\n   * The street number portion of an address\n   */\n  streetNumber?: string;\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchAddressStructuredOptionalParamsToQueryString = (options?: SearchAddressStructuredOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.countrySecondarySubdivision) {\n    queryParameters.push(`countrySecondarySubdivision=${options.countrySecondarySubdivision}`);\n  }\n\n  if (options.countrySubdivision) {\n    queryParameters.push(`countrySubdivision=${options.countrySubdivision}`);\n  }\n\n  if (options.countryTertiarySubdivision) {\n    queryParameters.push(`countryTertiarySubdivision=${options.countryTertiarySubdivision}`);\n  }\n\n  if (options.crossStreet) {\n    queryParameters.push(`crossStreet=${options.crossStreet}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(pc => pc.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.municipality) {\n    queryParameters.push(`municipality=${options.municipality}`);\n  }\n\n  if (options.municipalitySubdivision) {\n    queryParameters.push(`municipalitySubdivision=${options.municipalitySubdivision}`);\n  }\n\n  if (options.ofs) {\n    queryParameters.push(`ofs=${options.ofs}`);\n  }\n\n  if (options.postalCode) {\n    queryParameters.push(`postalCode=${options.postalCode}`);\n  }\n\n  if (options.streetName) {\n    queryParameters.push(`streetName=${options.streetName}`);\n  }\n\n  if (options.streetNumber) {\n    queryParameters.push(`streetNumber=${options.streetNumber}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","export enum ConnectorSet {\n  /**\n   * These are the standard household connectors for a certain region. They are all AC single phase and the standard Voltage and standard Amperage\n   */\n  StandardHouseholdCountrySpecific = 'StandardHouseholdCountrySpecific',\n  /**\n   * Type 1 connector as defined in the IEC 62196-2 standard. Also called Yazaki after the original manufacturer or SAE J1772 after the standard that first published it. Mostly used in combination with 120V single phase or up to 240V single phase infrastructure.\n   */\n  IEC62196Type1 = 'IEC62196Type1',\n  /**\n   * Type 1 based combo connector as defined in the IEC 62196-3 standard. The connector is based on the Type 1 connector – as defined in the IEC 62196-2 standard – with two additional direct current (DC) contacts to allow DC fast charging.\n   */\n  IEC62196Type1CCS = 'IEC62196Type1CCS',\n  /**\n   * Type 2 connector as defined in the IEC 62196-2 standard. Provided as a cable and plug attached to the charging point.\n   */\n  IEC62196Type2CableAttached = 'IEC62196Type2CableAttached',\n  /**\n   * Type 2 connector as defined in the IEC 62196-2 standard. Provided as a socket set into the charging point.\n   */\n  IEC62196Type2Outlet = 'IEC62196Type2Outlet',\n  /**\n   *  Type 2 based combo connector as defined in the IEC 62196-3 standard. The connector is based on the Type 2 connector – as defined in the IEC 62196-2 standard – with two additional direct current (DC) contacts to allow DC fast charging.\n   */\n  IEC62196Type2CCS = 'IEC62196Type2CCS',\n  /**\n   * Type 3 connector as defined in the IEC 62196-2 standard. Also called Scame after the original manufacturer. Mostly used in combination with up to 240V single phase or up to 420V three phase infrastructure.\n   */\n  IEC62196Type3 = 'IEC62196Type3',\n  /**\n   * CHAdeMO connector named after an association formed by the Tokyo Electric Power Company and industrial partners. Because of this is is also known as the TEPCO's connector. It supports fast DC charging.\n   */\n  Chademo = 'Chademo',\n  /**\n   * Industrial Blue connector is a connector defined in the IEC 60309 standard. It is sometime referred to as by some combination of the standard, the color and the fact that is a single phase connector. The connector usually has the \"P+N+E, 6h\" configuration.\n   */\n  IEC60309AC1PhaseBlue = 'IEC60309AC1PhaseBlue',\n  /**\n   * Industrial White connector is a DC connector defined in the IEC 60309 standard.\n   */\n  IEC60309DCWhite = 'IEC60309DCWhite',\n  /**\n   * The Tesla connector is the regionally specific Tesla Supercharger connector. I.e. it refers to either Tesla's proprietary connector, sometimes referred to as Tesla Port mostly limited to North America or the modified Type 2 (DC over Type 2) in Europe.\n   */\n  Tesla = 'Tesla'\n}\n","import { ConnectorSet } from './connector-set';\nimport { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchFuzzyOptionalParams {\n  /**\n   * List of brand names which could be used to restrict the result to specific brands. Item order does not matter. When multiple brands are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  brandSet?: string[];\n\n  /**\n   * Bottom right position of the bounding box. E.g. 37.553,-122.453\n   */\n  btmRight?: string;\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * List of connector types which could be used to restrict the result to Electric Vehicle Station supporting specific connector types. Item order does not matter. When multiple connector types are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  connectorSet?: ConnectorSet[];\n\n  /**\n   * Country codes\n   */\n  countrySet?: string[];\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * List of indexes which should be utilized for the search. Item order does not matter.\n   */\n  idxSet?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Latitude where results should be biased. E.g. 37.337\n   */\n  lat?: number;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Longitude where results should be biased. E.g. -121.89\n   */\n  lon?: number;\n\n  /**\n   * Maximum fuzziness level to be used. Default: 2, minimum: 1 and maximum: 4\n   * Level 1 has no spell checking.\n   * Level 2 uses normal n-gram spell checking. For example, query \"restrant\" can be matched to \"restaurant.\"\n   * Level 3 uses sound-like spell checking, and shingle spell checking. Sound-like spell checking is for \"rstrnt\" to \"restaurant\" matching. Shingle spell checking is for \"mountainview\" to \"mountain view\" matching.\n   * Level 4 doesn’t add any more spell checking functions.\n   * The search engine will start looking for a match on the level defined by minFuzzyLevel, and will stop searching at the level specified by maxFuzzyLevel.\n   */\n  maxFuzzyLevel?: number;\n\n  /**\n   * Minimum fuzziness level to be used. Default: 2, minimum: 1 and maximum: 4\n   * Level 1 has no spell checking.\n   * Level 2 uses normal n-gram spell checking. For example, query \"restrant\" can be matched to \"restaurant.\"\n   * Level 3 uses sound-like spell checking, and shingle spell checking. Sound-like spell checking is for \"rstrnt\" to \"restaurant\" matching. Shingle spell checking is for \"mountainview\" to \"mountain view\" matching.\n   * Level 4 doesn’t add any more spell checking functions.\n   * The search engine will start looking for a match on the level defined by minFuzzyLevel, and will stop searching at the level specified by maxFuzzyLevel.\n   */\n  minFuzzyLevel?: number;\n\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n\n  /**\n   * Hours of operation for a POI (Points of Interest). The availability of hours of operation will vary based on the data available. Supported value: nextSevenDays\n   */\n  openingHours?: 'nextSevenDays';\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   * Top left position of the bounding box. E.g. 37.553,-122.453\n   */\n  topLeft?: string;\n\n  /**\n   * If the typeahead flag is set, the query will be interpreted as a partial input and the search will enter predictive mode\n   */\n  typeahead?: boolean;\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchFuzzyOptionalParamsToQueryString = (options?: SearchFuzzyOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.brandSet) {\n    queryParameters.push(`brandSet=${options.brandSet.join(',')}`);\n  }\n\n  if (options.btmRight) {\n    queryParameters.push(`btmRight=${options.btmRight}`);\n  }\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.connectorSet) {\n    queryParameters.push(`connectorSet=${options.connectorSet.map(cs => cs.toString()).join(',')}`);\n  }\n\n  if (options.countrySet) {\n    queryParameters.push(`countrySet=${options.countrySet.join(',')}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(epc => epc.toString()).join(',')}`);\n  }\n\n  if (options.idxSet) {\n    queryParameters.push(`idxSet=${options.idxSet.map(id => id.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.lat) {\n    queryParameters.push(`lat=${options.lat}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.lon) {\n    queryParameters.push(`lon=${options.lon}`);\n  }\n\n  if (options.maxFuzzyLevel) {\n    queryParameters.push(`maxFuzzyLevel=${options.maxFuzzyLevel}`);\n  }\n\n  if (options.minFuzzyLevel) {\n    queryParameters.push(`minFuzzyLevel=${options.minFuzzyLevel}`);\n  }\n\n  if (options.ofs) {\n    queryParameters.push(`ofs=${options.ofs}`);\n  }\n\n  if (options.openingHours) {\n    queryParameters.push(`openingHours=${options.openingHours}`);\n  }\n\n  if (options.radius) {\n    queryParameters.push(`radius=${options.radius}`);\n  }\n\n  if (options.topLeft) {\n    queryParameters.push(`topLeft=${options.topLeft}`);\n  }\n\n  if (options.typeahead) {\n    queryParameters.push(`typeahead=${options.typeahead}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","import { ConnectorSet } from './connector-set';\nimport { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchNearbyOptionalParams {\n  /**\n   * List of brand names which could be used to restrict the result to specific brands. Item order does not matter. When multiple brands are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  brandSet?: string[];\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * List of connector types which could be used to restrict the result to Electric Vehicle Station supporting specific connector types. Item order does not matter. When multiple connector types are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  connectorSet?: ConnectorSet[];\n\n  /**\n   * Country codes\n   */\n  countrySet?: string[];\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchNearbyOptionalParamsToQueryString = (options?: SearchNearbyOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.brandSet) {\n    queryParameters.push(`brandSet=${options.brandSet.join(',')}`);\n  }\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.connectorSet) {\n    queryParameters.push(`connectorSet=${options.connectorSet.map(cs => cs.toString()).join(',')}`);\n  }\n\n  if (options.countrySet) {\n    queryParameters.push(`countrySet=${options.countrySet.join(',')}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(epc => epc.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.ofs) {\n    queryParameters.push(`ofs=${options.ofs}`);\n  }\n\n  if (options.radius) {\n    queryParameters.push(`radius=${options.radius}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","import { ConnectorSet } from './connector-set';\nimport { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchPOIOptionalParams {\n  /**\n   * List of brand names which could be used to restrict the result to specific brands. Item order does not matter. When multiple brands are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  brandSet?: string[];\n\n  /**\n   * Bottom right position of the bounding box. E.g. 37.553,-122.453\n   */\n  btmRight?: string;\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * List of connector types which could be used to restrict the result to Electric Vehicle Station supporting specific connector types. Item order does not matter. When multiple connector types are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  connectorSet?: ConnectorSet[];\n\n  /**\n   * Country codes\n   */\n  countrySet?: string[];\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Latitude where results should be biased. E.g. 37.337\n   */\n  lat?: number;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Longitude where results should be biased. E.g. -121.89\n   */\n  lon?: number;\n\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n\n  /**\n   * Hours of operation for a POI (Points of Interest). The availability of hours of operation will vary based on the data available. Supported value: nextSevenDays\n   */\n  openingHours?: 'nextSevenDays';\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   * Top left position of the bounding box. E.g. 37.553,-122.453\n   */\n  topLeft?: string;\n\n  /**\n   * If the typeahead flag is set, the query will be interpreted as a partial input and the search will enter predictive mode\n   */\n  typeahead?: boolean;\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchPOIOptionalParamsToQueryString = (options?: SearchPOIOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.brandSet) {\n    queryParameters.push(`brandSet=${options.brandSet.join(',')}`);\n  }\n\n  if (options.btmRight) {\n    queryParameters.push(`btmRight=${options.btmRight}`);\n  }\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.connectorSet) {\n    queryParameters.push(`connectorSet=${options.connectorSet.map(cs => cs.toString()).join(',')}`);\n  }\n\n  if (options.countrySet) {\n    queryParameters.push(`countrySet=${options.countrySet.join(',')}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(epc => epc.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.lat) {\n    queryParameters.push(`lat=${options.lat}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.lon) {\n    queryParameters.push(`lon=${options.lon}`);\n  }\n\n  if (options.ofs) {\n    queryParameters.push(`ofs=${options.ofs}`);\n  }\n\n  if (options.openingHours) {\n    queryParameters.push(`openingHours=${options.openingHours}`);\n  }\n\n  if (options.radius) {\n    queryParameters.push(`radius=${options.radius}`);\n  }\n\n  if (options.topLeft) {\n    queryParameters.push(`topLeft=${options.topLeft}`);\n  }\n\n  if (options.typeahead) {\n    queryParameters.push(`typeahead=${options.typeahead}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","import { ConnectorSet } from './connector-set';\nimport { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchPOICategoryOptionalParams {\n  /**\n   * List of brand names which could be used to restrict the result to specific brands. Item order does not matter. When multiple brands are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  brandSet?: string[];\n\n  /**\n   * Bottom right position of the bounding box. E.g. 37.553,-122.453\n   */\n  btmRight?: string;\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * List of connector types which could be used to restrict the result to Electric Vehicle Station supporting specific connector types. Item order does not matter. When multiple connector types are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  connectorSet?: ConnectorSet[];\n\n  /**\n   * Country codes\n   */\n  countrySet?: string[];\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Latitude where results should be biased. E.g. 37.337\n   */\n  lat?: number;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Longitude where results should be biased. E.g. -121.89\n   */\n  lon?: number;\n\n  /**\n   * Starting offset of the returned results within the full result set. Default: 0, minimum: 0 and maximum: 1900\n   */\n  ofs?: number;\n\n  /**\n   * Hours of operation for a POI (Points of Interest). The availability of hours of operation will vary based on the data available. Supported value: nextSevenDays\n   */\n  openingHours?: 'nextSevenDays';\n\n  /**\n   * The radius in meters to for the results to be constrained to the defined area\n   */\n  radius?: number;\n\n  /**\n   * Top left position of the bounding box. E.g. 37.553,-122.453\n   */\n  topLeft?: string;\n\n  /**\n   * If the typeahead flag is set, the query will be interpreted as a partial input and the search will enter predictive mode\n   */\n  typeahead?: boolean;\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchPOICategoryOptionalParamsToQueryString = (options?: SearchPOICategoryOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.brandSet) {\n    queryParameters.push(`brandSet=${options.brandSet.join(',')}`);\n  }\n\n  if (options.btmRight) {\n    queryParameters.push(`btmRight=${options.btmRight}`);\n  }\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.connectorSet) {\n    queryParameters.push(`connectorSet=${options.connectorSet.map(cs => cs.toString()).join(',')}`);\n  }\n\n  if (options.countrySet) {\n    queryParameters.push(`countrySet=${options.countrySet.join(',')}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(epc => epc.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.lat) {\n    queryParameters.push(`lat=${options.lat}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.lon) {\n    queryParameters.push(`lon=${options.lon}`);\n  }\n\n  if (options.ofs) {\n    queryParameters.push(`ofs=${options.ofs}`);\n  }\n\n  if (options.openingHours) {\n    queryParameters.push(`openingHours=${options.openingHours}`);\n  }\n\n  if (options.radius) {\n    queryParameters.push(`radius=${options.radius}`);\n  }\n\n  if (options.topLeft) {\n    queryParameters.push(`topLeft=${options.topLeft}`);\n  }\n\n  if (options.typeahead) {\n    queryParameters.push(`typeahead=${options.typeahead}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","export interface SearchPOICategoryTreeOptionalParams {\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, except NGT and NGT-Latn. Language tag is case insensitive. When data in specified language is not available for a specific field, default language is used (English).\n   */\n  language?: string;\n}\n\nexport const searchPOICategoryTreeOptionalParamsToQueryString = (options?: SearchPOICategoryTreeOptionalParams): string => {\n  if (!options && !options.language) {\n    return '';\n  }\n\n  return `language=${options.language}`;\n};\n","import { ConnectorSet } from './connector-set';\n\nexport interface SearchAlongRouteOptionalParams {\n  /**\n   * List of brand names which could be used to restrict the result to specific brands. Item order does not matter. When multiple brands are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  brandSet?: string[];\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * List of connector types which could be used to restrict the result to Electric Vehicle Station supporting specific connector types. Item order does not matter. When multiple connector types are provided, only results that belong to (at least) one of the provided list will be returned.\n   */\n  connectorSet?: ConnectorSet[];\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Hours of operation for a POI (Points of Interest). The availability of hours of operation will vary based on the data available. Supported value: nextSevenDays\n   */\n  openingHours?: 'nextSevenDays';\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchAlongRouteOptionalParamsToQueryString = (options?: SearchAlongRouteOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.brandSet) {\n    queryParameters.push(`brandSet=${options.brandSet.join(',')}`);\n  }\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.connectorSet) {\n    queryParameters.push(`connectorSet=${options.connectorSet.map(cs => cs.toString()).join(',')}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.openingHours) {\n    queryParameters.push(`openingHours=${options.openingHours}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","import { ExtendedPostalCodes } from './extended-postal-codes';\n\nexport interface SearchInsideGeometryOptionalParams {\n\n  /**\n   * List of category set IDs which could be used to restrict the result to specific Points of Interest categories. ID order does not matter. When multiple category identifiers are provided, only POIs that belong to (at least) one of the categories from the provided list will be returned.\n   */\n  categorySet?: number[];\n\n  /**\n   * Indexes for which extended postal codes should be included in the results.\n   */\n  extendedPostalCodesFor?: ExtendedPostalCodes[];\n\n  /**\n   * List of indexes which should be utilized for the search. Item order does not matter.\n   */\n  idxSet?: ExtendedPostalCodes[];\n\n  /**\n   * Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used.\n   */\n  language?: string;\n\n  /**\n   * Maximum number of responses that will be returned. Default: 10, minimum: 1 and maximum: 100\n   */\n  limit?: number;\n\n  /**\n   * Hours of operation for a POI (Points of Interest). The availability of hours of operation will vary based on the data available. Supported value: nextSevenDays\n   */\n  openingHours?: 'nextSevenDays';\n\n  /**\n   * The View parameter specifies which set of geopolitically disputed content is returned via Azure Maps services, including borders and labels displayed on the map. The View parameter (also referred to as “user region parameter”) will show the correct maps for that country/region. By default, the View parameter is set to “Unified” even if you haven’t defined it in the request. It is your responsibility to determine the location of your users, and then set the View parameter correctly for that location. Alternatively, you have the option to set ‘View=Auto’, which will return the map data based on the IP address of the request. The View parameter in Azure Maps must be used in compliance with applicable laws, including those regarding mapping, of the country where maps, images and other data and third party content that you are authorized to access via Azure Maps is made available. Example: view=IN.\n   */\n  view?: string;\n}\n\nexport const searchInsideGeometryOptionalParamsToQueryString = (options?: SearchInsideGeometryOptionalParams): string => {\n  if (!options) {\n    return '';\n  }\n\n  const queryParameters = [];\n\n  if (options.categorySet) {\n    queryParameters.push(`categorySet=${options.categorySet.join(',')}`);\n  }\n\n  if (options.extendedPostalCodesFor) {\n    queryParameters.push(`extendedPostalCodesFor=${options.extendedPostalCodesFor.map(epc => epc.toString()).join(',')}`);\n  }\n\n  if (options.idxSet) {\n    queryParameters.push(`idxSet=${options.idxSet.map(id => id.toString()).join(',')}`);\n  }\n\n  if (options.language) {\n    queryParameters.push(`language=${options.language}`);\n  }\n\n  if (options.limit) {\n    queryParameters.push(`limit=${options.limit}`);\n  }\n\n  if (options.openingHours) {\n    queryParameters.push(`openingHours=${options.openingHours}`);\n  }\n\n  if (options.view) {\n    queryParameters.push(`view=${options.view}`);\n  }\n\n  return queryParameters.join('&');\n};\n","/**\n * Using the AAD Authentication, the azure-maps-controls library seems to be based on ADAL. This will break if the switch to MSAL is done.\n */\nconst atlasAccessTokenStorageKey = 'adal.access.token.keyhttps://atlas.microsoft.com/';\n\nexport const getAtlasToken = (): string => localStorage.getItem(atlasAccessTokenStorageKey);\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport * as atlas from 'azure-maps-control';\nimport { Observable } from 'rxjs';\nimport { AzureMapsConfiguration, AZUREMAPS_CONFIG } from '../configuration';\nimport { getAtlasToken } from '../helpers';\n\n@Injectable()\nexport class AtlasRestAuthenticationInterceptor\n  implements HttpInterceptor {\n\n  constructor(@Inject(AZUREMAPS_CONFIG) private readonly azureMapsConfiguration: AzureMapsConfiguration) {\n\n  }\n\n  public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n    if (req.url.startsWith('https://atlas.microsoft.com')) {\n      if (this.azureMapsConfiguration.authOptions.authType === atlas.AuthenticationType.subscriptionKey) {\n        const skClone = req.clone({\n          url: req.urlWithParams + `&subscription-key=${this.azureMapsConfiguration.authOptions.subscriptionKey}`\n        });\n\n        return next.handle(skClone);\n      }\n\n      if (this.azureMapsConfiguration.authOptions.authType === atlas.AuthenticationType.aad) {\n        const aadClone = req.clone({\n          setHeaders: {\n            'x-ms-client-id': this.azureMapsConfiguration.authOptions.clientId,\n            authorization: `Bearer ${getAtlasToken()}`\n          }\n        });\n\n        return next.handle(aadClone);\n      }\n    }\n\n    return next.handle(req);\n\n  }\n\n}\n","import { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';\nimport { AzureMapsConfiguration, AZUREMAPS_CONFIG } from '../configuration';\nimport {\n  AzureMapDirective,\n  ZoomControlDirective,\n  PitchControlDirective,\n  CompassControlDirective,\n  StyleControlDirective,\n  HtmlMarkerDirective,\n  DrawingToolbarDirective,\n  SymbolLayerDirective,\n  BubbleLayerDirective,\n  LineLayerDirective,\n  PolygonLayerDirective,\n  PolygonExtrusionLayerDirective,\n  HeatmapLayerDirective,\n  ImageLayerDirective,\n  TileLayerDirective,\n  PopupDirective\n} from '../directives';\nimport * as atlas from 'azure-maps-control';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { AtlasRestAuthenticationInterceptor } from '../interceptors';\n\nexport const setAzureMapsConfiguration = (configuration: AzureMapsConfiguration) => {\n  if (!configuration) {\n    throw Error('No AzureMapsConfiguration was provided');\n  }\n  atlas.setAuthenticationOptions(configuration.authOptions);\n  if (configuration.domain) {\n    atlas.setDomain(configuration.domain);\n  }\n};\n\nconst setAtlasOptions = (configuration: AzureMapsConfiguration) => (): Promise<void> => new Promise<void>(resolve => {\n  if (configuration) {\n    setAzureMapsConfiguration(configuration);\n  }\n  resolve();\n});\n\n//@dynamic\n@NgModule({ declarations: [\n        AzureMapDirective,\n        ZoomControlDirective,\n        PitchControlDirective,\n        CompassControlDirective,\n        StyleControlDirective,\n        HtmlMarkerDirective,\n        DrawingToolbarDirective,\n        SymbolLayerDirective,\n        BubbleLayerDirective,\n        LineLayerDirective,\n        PolygonLayerDirective,\n        PolygonExtrusionLayerDirective,\n        HeatmapLayerDirective,\n        ImageLayerDirective,\n        TileLayerDirective,\n        PopupDirective\n    ],\n    exports: [\n        AzureMapDirective,\n        ZoomControlDirective,\n        PitchControlDirective,\n        CompassControlDirective,\n        StyleControlDirective,\n        HtmlMarkerDirective,\n        DrawingToolbarDirective,\n        SymbolLayerDirective,\n        BubbleLayerDirective,\n        LineLayerDirective,\n        PolygonLayerDirective,\n        PolygonExtrusionLayerDirective,\n        HeatmapLayerDirective,\n        ImageLayerDirective,\n        TileLayerDirective,\n        PopupDirective\n    ], imports: [], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class AzureMapsModule {\n  static forRoot(configuration?: AzureMapsConfiguration): ModuleWithProviders<AzureMapsModule> {\n    return {\n      ngModule: AzureMapsModule,\n      providers: [\n        {\n          provide: AZUREMAPS_CONFIG,\n          useValue: configuration\n        },\n        {\n          provide: APP_INITIALIZER,\n          useFactory: setAtlasOptions,\n          deps: [AZUREMAPS_CONFIG],\n          multi: true\n        },\n        {\n          provide: HTTP_INTERCEPTORS,\n          useClass: AtlasRestAuthenticationInterceptor,\n          multi: true\n        }\n      ]\n    };\n  }\n\n  static forChild(configuration: AzureMapsConfiguration): ModuleWithProviders<AzureMapsModule> {\n    setAzureMapsConfiguration(configuration);\n    return {\n      ngModule: AzureMapsModule,\n      providers: [\n        {\n          provide: AZUREMAPS_CONFIG,\n          useValue: configuration\n        },\n        {\n          provide: HTTP_INTERCEPTORS,\n          useClass: AtlasRestAuthenticationInterceptor,\n          multi: true\n        }\n      ]\n    };\n  }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { AZUREMAPS_CONFIG, AzureMapsConfiguration } from '../configuration';\nimport * as atlas from 'azure-maps-rest';\nimport { AuthenticationType } from 'azure-maps-control';\nimport { AzureMapsModule } from '../modules';\nimport { getAtlasToken } from '../helpers';\n\n@Injectable({\n  providedIn: AzureMapsModule\n})\nexport class PipelineProvider {\n\n  constructor(@Inject(AZUREMAPS_CONFIG) private readonly azureMapsConfiguration: AzureMapsConfiguration) {\n\n  }\n\n  public getPipeline(): atlas.Pipeline {\n    if (this.azureMapsConfiguration.authOptions.authType === AuthenticationType.subscriptionKey) {\n      return atlas.MapsURL.newPipeline(new atlas.SubscriptionKeyCredential(this.azureMapsConfiguration.authOptions.subscriptionKey), {\n        retryOptions: this.azureMapsConfiguration.pipelineRetryOptions\n      });\n    }\n\n    if (this.azureMapsConfiguration.authOptions.authType === AuthenticationType.aad) {\n      return atlas.MapsURL.newPipeline(\n        new atlas.TokenCredential(this.azureMapsConfiguration.authOptions.clientId, getAtlasToken()),\n        {\n          retryOptions: this.azureMapsConfiguration.pipelineRetryOptions\n        }\n      );\n    }\n\n    throw new Error('Authentication type not supported');\n  }\n\n}\n","import { HttpClient } from '@angular/common/http';\n\nexport abstract class AtlasHttpService {\n\n  private readonly _rootUrl = 'https://atlas.microsoft.com';\n  private readonly _apiVersion = '1.0';\n\n  constructor(protected readonly httpClient: HttpClient) {\n\n  }\n\n  protected buildUrl(path: string): string {\n    return `${this._rootUrl}/${path}?api-version=${this._apiVersion}`;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as atlas from 'azure-maps-rest';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AtlasHttpService } from './atlas-http.service';\nimport {\n  SearchAddressOptionalParams,\n  searchAddressOptionalParamsToQueryString,\n  SearchAddressReverseCrossStreetOptionalParams,\n  searchAddressReverseCrossStreetOptionalParamsToQueryString,\n  SearchAddressReverseOptionalParams,\n  searchAddressReverseOptionalParamsToQueryString,\n  SearchAddressStructuredOptionalParams,\n  searchAddressStructuredOptionalParamsToQueryString,\n  SearchAlongRouteOptionalParams,\n  searchAlongRouteOptionalParamsToQueryString,\n  SearchFuzzyOptionalParams,\n  searchFuzzyOptionalParamsToQueryString,\n  SearchInsideGeometryOptionalParams,\n  searchInsideGeometryOptionalParamsToQueryString,\n  SearchNearbyOptionalParams,\n  searchNearbyOptionalParamsToQueryString,\n  SearchPOICategoryOptionalParams,\n  searchPOICategoryOptionalParamsToQueryString,\n  SearchPOICategoryTreeOptionalParams,\n  searchPOICategoryTreeOptionalParamsToQueryString,\n  SearchPOICategoryTreeResponse,\n  SearchPOIOptionalParams,\n  searchPOIOptionalParamsToQueryString\n} from '../models';\nimport { AzureMapsModule } from '../modules';\n\n@Injectable({\n  providedIn: AzureMapsModule\n})\nexport class SearchService\n  extends AtlasHttpService {\n\n  constructor(httpClient: HttpClient) {\n    super(httpClient);\n  }\n\n  /**\n   *\n   *\n   * **Address Geocoding** In many cases, the complete search service might be too much, for\n   *\n   * instance if you are only interested in traditional geocoding.\n   *\n   * Search can also be accessed for address look up exclusively.\n   *\n   * The geocoding is performed by hitting the geocode endpoint with just the address or\n   *\n   * partial address in question.\n   *\n   * The geocoding search index will be queried for everything above the street level data.\n   *\n   * No POIs will be returned.\n   *\n   * Note that the geocoder is very tolerant of typos and incomplete addresses.\n   *\n   * It will also handle everything from exact street addresses or street or intersections\n   *\n   * as well as higher level geographies such as city centers, counties, states etc.\n   *\n   * Uses the Get Search Address API: https://docs.microsoft.com/rest/api/maps/search/getsearchaddress\n   *\n   *\n   *\n   * @param query The address to search for (e.g., \"1 Microsoft way, Redmond, WA\").\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchAddress(query: string,\n    options?: SearchAddressOptionalParams): Observable<atlas.Models.SearchAddressResponse> {\n    let url = this.buildUrl('search/address/json');\n    url += `&query=${query}`;\n\n    if (options) {\n      url += `&${searchAddressOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchAddressResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * **Reverse Geocode to an Address** There may be times when you need to translate a\n   *\n   * coordinate (example: -122.3862, 37.786505) into a human understandable street address.\n   *\n   * Most often this is needed in tracking applications where you receive a GPS feed from the device or\n   *\n   * asset and wish to know what address where the coordinate is located.\n   *\n   * This endpoint will return address information for a given coordinate.\n   *\n   * Uses the Get Search Address Reverse API: https://docs.microsoft.com/rest/api/maps/search/getsearchaddressreverse\n   *\n   * @param position The position to reverse search,\n   * a coordinate array of `[longitude, latitude]` e.g. `[-122.125679, 47.641268]`.\n   * @param [options] The optional parameters\n   * @param timeout Create a new Aborter instance with the given timeout (in ms).\n   * @returns\n   * @memberof SearchService\n   */\n  public searchAddressReverse(position: GeoJSON.Position,\n    options?: SearchAddressReverseOptionalParams): Observable<atlas.Models.SearchAddressReverseResponse> {\n\n    let url = this.buildUrl('search/address/reverse/json');\n    url += `&query=${position[0]},${position[1]}`;\n\n    if (options) {\n      url += `&${searchAddressReverseOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchAddressReverseResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * **Reverse Geocode to a Cross Street** There may be times when you need to translate a\n   *\n   * coordinate (example: -122.3862, 37.786505) into a human understandable cross street.\n   *\n   * Most often this is needed in tracking applications where you receive a GPS feed from the device or asset\n   *\n   * and wish to know what address where the coordinate is located.\n   *\n   * This endpoint will return cross street information for a given coordinate.\n   *\n   * Uses the Get Search Address Reverse Cross Street API: https://docs.microsoft.com/rest/api/maps/search/getsearchaddressreversecrossstreet\n   *\n   * @param position The position to reverse search,\n   * a coordinate array of `[longitude, latitude]` e.g. `[-122.125679, 47.641268]`.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchAddressReverseCrossStreet(\n    position: GeoJSON.Position,\n    options?: SearchAddressReverseCrossStreetOptionalParams): Observable<atlas.Models.SearchAddressReverseCrossStreetResponse> {\n\n    let url = this.buildUrl('search/address/reverse/crossStreet/json');\n    url += `&query=${position[0]},${position[1]}`;\n\n    if (options) {\n      url += `&${searchAddressReverseCrossStreetOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchAddressReverseCrossStreetResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * **Structured Address Geocoding** Azure Address Geocoding can also be accessed for\n   *\n   * structured address look up exclusively.\n   *\n   * The geocoding search index will be queried for everything above the street level data.\n   *\n   * No POIs will be returned. Note that the geocoder is very tolerant of typos and incomplete addresses.\n   *\n   * It will also handle everything from exact street addresses or street or intersections as well as\n   *\n   * higher level geographies such as city centers, counties, states etc.\n   *\n   * Uses the Get Search Address Structured API: https://docs.microsoft.com/rest/api/maps/search/getsearchaddressstructured\n   *\n   *\n   *\n   * @param countryCode The 2 or 3 letter\n   * [ISO3166-1](https://www.iso.org/iso-3166-country-codes.html) country code portion of an address.\n   * E.g. US.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchAddressStructured(\n    countryCode: string,\n    options?: SearchAddressStructuredOptionalParams): Observable<atlas.Models.SearchAddressStructuredResponse> {\n\n    let url = this.buildUrl('search/address/structured/json');\n    url += `&countryCode=${countryCode}`;\n\n    if (options) {\n      url += `&${searchAddressStructuredOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchAddressStructuredResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * The Search Along Route endpoint allows you to perform a fuzzy search for POIs along a specified\n   *\n   * route.\n   *\n   * This search is constrained by specifying the `maxDetourTime` limiting measure.\n   *\n   * To send the route-points you will use a `body` which will contain the `route` object represented\n   *\n   * as a `GeoJSON LineString` type and the `Content-Type` header will be set to `application/json`.\n   *\n   * Each route-point in `route` is represented as a `GeoJSON Position` type i.e. an array where the\n   *\n   * _longitude_ value is followed by the _latitude_ value and the _altitude_ value is ignored.\n   *\n   * The `route` should contain at least 2 route-points.\n   *\n   * It is possible that original route will be altered, some of it's points may be skipped.\n   *\n   * If the route that passes through the found point is faster than the original one, the `detourTime` value in\n   *\n   * the response is negative.\n   *\n   * Uses the Post Search Along Route API: https://docs.microsoft.com/rest/api/maps/search/postsearchalongroute\n   *\n   *\n   *\n   * @param query The POI name to search for (e.g., \"statue of liberty\", \"starbucks\", \"pizza\").\n   * @param maxDetourTime Maximum detour time of the point of interest in seconds. Max value is 3600 seconds\n   * @param body This represents the route to search along and should be a\n   * valid `GeoJSON LineString` type. Please refer to [RFC\n   * 7946](https://tools.ietf.org/html/rfc7946#section-3.1.4) for details.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchAlongRoute(query: string,\n    maxDetourTime: number,\n    body: atlas.Models.SearchAlongRouteRequestBody,\n    options?: SearchAlongRouteOptionalParams): Observable<atlas.Models.SearchAlongRouteResponse> {\n\n    let url = this.buildUrl('search/alongRoute/json');\n    url += `&query=${query}&maxDetourTime=${maxDetourTime}`;\n\n    if (options) {\n      url += `&${searchAlongRouteOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.post<atlas.Models.SearchAlongRouteResponse>(url, body);\n  }\n\n  /**\n   *\n   *\n   * **Free Form Search** The basic default API is Free Form Search which handles the most\n   *\n   * fuzzy of inputs handling any combination of address or POI tokens.\n   *\n   * This search API is the canonical 'single line search'.\n   *\n   * The Free Form Search API is a seamless combination of POI search and geocoding.\n   *\n   * The API can also be weighted with a contextual position (lat./lon. pair), or\n   *\n   * fully constrained by a coordinate and radius, or it can be executed more generally without any\n   *\n   * geo biasing anchor point.\n   *\n   * We strongly advise you to use the 'countrySet' parameter to specify only the countries for\n   *\n   * which your application needs coverage, as the default behavior will be to search the entire world,\n   *\n   * potentially returning unnecessary results. E.g.: `countrySet`=US,FR. Please see [Search Coverage]\n   *\n   * (https://docs.microsoft.com/azure/location-based-services/geocoding-coverage) for\n   *\n   * a complete list of all the supported countries.\n   *\n   * Most Search queries default to `maxFuzzyLevel`=2 to gain performance and also reduce unusual results.\n   *\n   * This new default can be overridden as needed per request by passing in the query param `maxFuzzyLevel`=3 or 4.\n   *\n   * Uses the Get Search Fuzzy API: https://docs.microsoft.com/rest/api/maps/search/getsearchfuzzy\n   *\n   *\n   *\n   * @param query The applicable query string (e.g., \"seattle\", \"pizza\").\n   * Can _also_ be specified as a coordinate array of `[longitude, latitude]` (e.g., `[-122.125679, 47.641268]`).\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchFuzzy(query: string | GeoJSON.Position,\n    options?: SearchFuzzyOptionalParams): Observable<atlas.Models.SearchFuzzyResponse> {\n\n    let url = this.buildUrl('search/fuzzy/json');\n    if (typeof query === 'string') {\n      url += `&query=${query}`;\n    } else {\n      url += `&query=${query[0]},${query[1]}`;\n    }\n\n    if (options) {\n      url += `&${searchFuzzyOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchFuzzyResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * The Search Geometry endpoint allows you to perform a free form search inside a single geometry\n   *\n   * or many of them.\n   *\n   * The search results that fall inside the geometry/geometries will be returned.\n   *\n   * The geographical features to be searched can be modeled as Polygon and/or Circle geometries\n   *\n   * represented using any one of the following `GeoJSON` types: **GeoJSON FeatureCollection**,\n   *\n   * The `geometry` can be represented as a `GeoJSON FeatureCollection` object.\n   *\n   * This is the recommended option if the geometry contains both Polygons and Circles.\n   *\n   * The `FeatureCollection` can contain a max of 50 `GeoJSON Feature` objects.\n   *\n   * Each `Feature` object should represent either a Polygon or a Circle with the following conditions:\n   *\n   * A `Feature` object for the Polygon geometry can have a max of 50 coordinates and it's properties must be empty.\n   *\n   * A `Feature` object for the Circle geometry is composed of a _center_ represented using a `GeoJSON Point` type and a _radius_ value\n   *\n   * (in meters) which must be specified in the object's properties along with the _subType_ property\n   *\n   * whose value should be 'Circle'.\n   *\n   * Please see the Examples section below for a sample `FeatureCollection` representation.\n   *\n   * **GeoJSON GeometryCollection**, The `geometry` can be represented as a `GeoJSON GeometryCollection` object.\n   *\n   * This is the recommended option if the geometry contains a list of Polygons only.\n   *\n   * The `GeometryCollection` can contain a max of 50 `GeoJSON Polygon` objects.\n   *\n   * Each `Polygon` object can have a max of 50 coordinates.\n   *\n   * Please see the Examples section below for a sample `GeometryCollection` representation.\n   *\n   * **GeoJSON Polygon**, The `geometry` can be represented as a `GeoJSON Polygon` object.\n   *\n   * This is the recommended option if the geometry contains a single Polygon.\n   *\n   * The `Polygon` object can have a max of 50 coordinates.\n   *\n   * Uses the Post Search Inside Geometry API: https://docs.microsoft.com/rest/api/maps/search/postsearchinsidegeometry\n   *\n   * @param query The applicable query string (e.g., \"seattle\", \"pizza\").\n   * @param body This represents the geometry for one or more geographical\n   * features (parks, state boundary etc.) to search in and should be a GeoJSON compliant type.\n   * Please refer to [RFC 7946](https://tools.ietf.org/html/rfc7946) for details.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchInsideGeometry(query: string,\n    body: atlas.Models.SearchInsideGeometryRequestBody,\n    options?: SearchInsideGeometryOptionalParams): Observable<atlas.Models.SearchPostSearchInsideGeometryResponse> {\n\n    let url = this.buildUrl('search/geometry/json');\n    url += `&query=${query}`;\n\n    if (options) {\n      url += `&${searchInsideGeometryOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.post<atlas.Models.SearchPostSearchInsideGeometryResponse>(url, body);\n  }\n\n  /**\n   *\n   *\n   * **Nearby Search** If you have a use case for only retrieving POI results around a\n   *\n   * specific location, the nearby search method may be the right choice.\n   *\n   * This endpoint will only return POI results, and does not take in a search query parameter.\n   *\n   * Uses the Get Search Nearby API: https://docs.microsoft.com/rest/api/maps/search/getsearchnearby\n   *\n   *\n   *\n   * @param location Location where results should be biased.\n   * Should be an array of `[longitude, latitude]`, E.g. `[-121.89, 37.337]`.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchNearby(location: GeoJSON.Position,\n    options?: SearchNearbyOptionalParams): Observable<atlas.Models.SearchNearbyResponse> {\n\n    let url = this.buildUrl(`search/nearby/json`);\n    url += `&lon=${location[0]}&lat=${location[1]}`;\n\n    if (options) {\n      url += `&${searchNearbyOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchNearbyResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * **Get POI by Name** If your search use case only requires POI results, you may use the\n   *\n   * POI endpoint for searching.\n   *\n   * This endpoint will only return POI results.\n   *\n   * Uses the Get Search POI API: https://docs.microsoft.com/rest/api/maps/search/getsearchpoi\n   *\n   *\n   *\n   * @param query The POI name to search for (e.g., \"statue of liberty\", \"starbucks\").\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchPOI(query: string,\n    options?: SearchPOIOptionalParams): Observable<atlas.Models.SearchPoiResponse> {\n\n    let url = this.buildUrl('search/poi/json');\n    url += `&query=${query}`;\n\n    if (options) {\n      url += `&${searchPOIOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchPoiResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * **Get POI by Category** If your search use case only requires POI results filtered by\n   *\n   * category, you may use the category endpoint.\n   *\n   * This endpoint will only return POI results which are categorized as specified.\n   *\n   * List of available categories can be found [here](https://docs.microsoft.com/azure/azure-maps/search-categories).\n   *\n   * Uses the Get Search POI Category API: https://docs.microsoft.com/rest/api/maps/search/getsearchpoicategory\n   *\n   *\n   *\n   * @param query The POI category to search for (e.g., \"AIRPORT\", \"BEACH\").\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof SearchService\n   */\n  public searchPOICategory(query: string,\n    options?: SearchPOICategoryOptionalParams): Observable<atlas.Models.SearchPoiCategoryResponse> {\n\n    let url = this.buildUrl('search/poi/category/json');\n    url += `&query=${query}`;\n\n    if (options) {\n      url += `&${searchPOICategoryOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<atlas.Models.SearchPoiCategoryResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * POI Category API provides a full list of supported Points of Interest (POI) categories and subcategories together with their translations and synonyms. The returned content can be used to provide more meaningful results through other Search Service APIs, like Get Search POI.\n   *\n   *\n   *\n   * @param [options] The optional parameters.\n   * @returns\n   * @memberof SearchService\n   */\n  public searchPOICategoryTree(options?: SearchPOICategoryTreeOptionalParams): Observable<SearchPOICategoryTreeResponse> {\n    let url = this.buildUrl('search/poi/category/tree/json');\n\n    if (options) {\n      url += `&${searchPOICategoryTreeOptionalParamsToQueryString(options)}`;\n    }\n\n    return this.httpClient.get<SearchPOICategoryTreeResponse>(url);\n  }\n\n  /**\n   *\n   *\n   * The Search Polygon API allows you to request the geometry data such as a city or country\n   *\n   * outline for a set of entities, previously retrieved from an Online Search request in GeoJSON\n   *\n   * format. The geometry  ID is returned in the dataSources object under \"geometry\" and \"id\" in\n   *\n   * either a Search Address or Search Fuzzy call.\n   *\n   *\n   *\n   * Please note that any geometry ID retrieved from an Online Search endpoint has a limited\n   *\n   * lifetime. The client  should not store geometry IDs in persistent storage for later referral, as\n   *\n   * the stability of these identifiers is  not guaranteed for a long period of time. It is expected\n   *\n   * that a request to the Polygon method is made within a  few minutes of the request to the Online\n   *\n   * Search method that provided the ID. The service allows for batch  requests up to 20 identifiers.\n   *\n   *\n   *\n   * Uses the Get Search Polygon API: https://docs.microsoft.com/rest/api/maps/search/getsearchpolygon\n   *\n   *\n   *\n   * @param geometries List of geometry UUIDs, previously retrieved from an Online\n   * Search request.\n   * @returns\n   * @memberof SearchService\n   */\n  public searchPolygons(geometries: string[]): Observable<atlas.Models.SearchPolygonResponse> {\n    const url = this.buildUrl('search/polygon/json') + `&geometries=${geometries.join(',')}`;\n    return this.httpClient.get<atlas.Models.SearchPolygonResponse>(url);\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { PipelineProvider } from './pipeline-provider';\nimport * as atlas from 'azure-maps-rest';\nimport { AzureMapsModule } from '../modules';\n\n@Injectable({\n  providedIn: AzureMapsModule\n})\nexport class RouteService {\n\n  private readonly _routeUrl: atlas.RouteURL;\n  private readonly _defaultTimeout = 10000;\n\n  constructor(pipelineProvider: PipelineProvider) {\n    this._routeUrl = new atlas.RouteURL(pipelineProvider.getPipeline());\n  }\n\n  /**\n   *\n   *\n   * Returns  a route between an origin and a destination, passing through waypoints if they are\n   *\n   * specified. The route will take into account factors such as current traffic and the typical road\n   *\n   * speeds on the requested day of the week and time of day.\n   *\n   *\n   *\n   * Information returned includes the distance, estimated travel time, and a representation of the\n   *\n   * route geometry. Additional routing information such as optimized waypoint order or turn by turn\n   *\n   * instructions is also available, depending on the options selected.\n   *\n   *\n   *\n   * Routing service provides a set of parameters for a detailed description of vehicle-specific\n   *\n   * Consumption Model. Please check [Consumption\n   *\n   * Model](https://docs.microsoft.com/azure/azure-maps/consumption-model) for detailed explanation\n   *\n   * of the concepts and parameters involved.\n   *\n   *\n   *\n   * If `options.postBody` is specified uses the Post Route Directions API: https://docs.microsoft.com/rest/api/maps/route/postroutedirections\n   *\n   *\n   *\n   * Otherwise uses the Get Route Directions API: https://docs.microsoft.com/rest/api/maps/route/getroutedirections\n   *\n   *\n   *\n   * @param aborter Create a new Aborter instance with Aborter.none or Aborter.timeout(),\n   * goto documents of Aborter for more examples about request cancellation.\n   * @param coordinates An array of coordinates through which the route is calculated.\n   * Each coordinate is an array of `[longitude, latitude]`. A minimum of two coordinates is required.\n   * The first one is the origin and the last is the destination of the route.\n   * Optional coordinates in-between act as WayPoints in the route. You can pass up to 150 WayPoints.\n   * @param [options]\n   * @returns\n   * @memberof RouteURL\n   */\n  public calculateRouteDirections(coordinates: GeoJSON.Position[],\n    options?: atlas.CalculateRouteDirectionsOptions,\n    timeout: number = this._defaultTimeout):\n    Promise<atlas.CalculateRouteDirectionsResponse> {\n    return this\n      ._routeUrl\n      .calculateRouteDirections(atlas.Aborter.timeout(timeout), coordinates, options);\n  }\n\n  /**\n   *\n   *\n   * Calculate a set of locations that can be reached from the origin point based\n   *\n   * on fuel, energy,  or time budget that is specified. A polygon boundary (or Isochrone) is\n   *\n   * returned in a counterclockwise  orientation as well as the precise polygon center which was the\n   *\n   * result of the origin point.\n   *\n   *\n   *\n   * The returned polygon can be used for further processing such as  [Search Inside\n   *\n   * Geometry](https://docs.microsoft.com/rest/api/maps/search/getsearchinsidegeometry) to\n   *\n   * search for POIs within the provided Isochrone.\n   *\n   *\n   *\n   * Uses the Get Route Range API: https://docs.microsoft.com/rest/api/maps/route/getrouterange\n   *\n   *\n   *\n   * @param aborter Create a new Aborter instance with Aborter.none or Aborter.timeout(),\n   * goto documents of Aborter for more examples about request cancellation.\n   * @param center The coordinate from which the range calculation should start.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof RouteURL\n   */\n  public calculateRouteMatrix(body: atlas.Models.RouteMatrixRequestBody,\n    options?: atlas.Models.RoutePostRouteMatrixPreviewOptionalParams,\n    timeout: number = this._defaultTimeout):\n    Promise<atlas.CalculateRouteMatrixResponse> {\n    return this\n      ._routeUrl\n      .calculateRouteMatrix(atlas.Aborter.timeout(timeout), body, options);\n  }\n\n  /**\n   *\n   *\n   * **Note: This API is currently in preview and may be subject to breaking changes.**\n   *\n   * Calculates a matrix of route summaries for a set of routes\n   *\n   * defined by origin and destination locations. For every given origin, this service calculates the\n   *\n   * cost of routing from that origin to every given destination. The set of origins and the set of\n   *\n   * destinations can be thought of as the column and row headers of a table and each cell in the\n   *\n   * table contains the costs of routing from the origin to the destination for that cell. For each\n   *\n   * route, the travel times and distances are calculated. You can use the computed costs to\n   *\n   * determine which routes to calculate using the Routing Directions API. If waitForResults\n   *\n   * parameter in the request is set to false (default value), this API returns a 202 response code\n   *\n   * along a redirect URL in the Location field of the response header. This URL should be checked\n   *\n   * periodically until the response data or error information is available.\n   *\n   *\n   *\n   * The maximum size of a matrix for this API is 700 (the number of origins  multiplied by the\n   *\n   * number of destinations). With that constraint in mind,  examples of possible matrix dimensions\n   *\n   * are: 50x10, 10x10, 28x25. 10x70  (it does not need to be square).\n   *\n   *\n   *\n   * Calculating a route matrix is considered a long running operation.\n   *\n   * A long running operations implies that after the initial request is accepted (HTTP 202)\n   *\n   * the final result will be polled for until available.\n   *\n   * Each poll request restarts the aborter's timeout, if one was specified.\n   *\n   *\n   *\n   * Uses the Post Route Matrix API: https://docs.microsoft.com/rest/api/maps/route/postroutematrixpreview\n   *\n   *\n   *\n   * @param aborter Create a new Aborter instance with Aborter.none or Aborter.timeout(),\n   * goto documents of Aborter for more examples about request cancellation.\n   * @param body The matrix of origin and destination coordinates to compute the route\n   * distance, travel time and other summary for each cell of the matrix based on the input\n   * parameters. The minimum and the maximum cell count supported are 1 and 700 respectively. For\n   * example, it can be 35 origins and 20 destinations or 25 origins and 25 destinations.\n   * @param [options] The optional parameters\n   * @returns\n   * @memberof RouteURL\n   */\n  public calculateRouteRange(center: GeoJSON.Position,\n    options?: atlas.Models.RouteGetRouteRangeOptionalParams,\n    timeout: number = this._defaultTimeout):\n    Promise<atlas.Response<atlas.Models.RouteRangeResponse, atlas.Models.RouteGetRouteRangeResponse, atlas.RouteRangeGeojson>> {\n    return this\n      ._routeUrl\n      .calculateRouteRange(atlas.Aborter.timeout(timeout), center, options);\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport {\n  CurrentConditionsResponse,\n  DailyForecastResponse,\n  HourlyForecastResponse,\n  MinuteForecastResponse,\n  QuarterDayForecastResponse,\n  Unit,\n  WaypointInput,\n  WeatherAlongRouteResponse\n} from '../contracts';\nimport { AtlasHttpService } from './atlas-http.service';\nimport { AzureMapsModule } from '../modules';\n\n@Injectable({\n  providedIn: AzureMapsModule\n})\nexport class WeatherService\n  extends AtlasHttpService {\n\n  constructor(httpClient: HttpClient) {\n    super(httpClient);\n  }\n\n  /**\n   * Get Current Conditions service returns detailed current weather conditions such as precipitation, temperature and wind for a given coordinate location.\n   * Also, observations from the past 6 or 24 hours for a particular location can be retrieved.\n   * The basic information returned with the response include details such as observation date and time, brief description of the weather conditions, weather icon, precipitation indicator flags, and temperature.\n   * Additional details such as RealFeel™ Temperature and UV index are also returned.\n   *\n   * @param latitude Latitude\n   * @param longitude Longitude\n   * @param details Return full details for the current conditions. Available values are\n                    - true - Returns full details. By default all details are returned.\n                    - false - Returns a truncated version of the current condition data, which includes observation date time, weather phrase, icon code, precipitation indicator flag, and temperature.\n   * @param duration Time frame of the returned weather conditions. By default, the most current weather conditions will be returned. Default value is 0. Supported values are:\n                    0 - Return the most current weather conditions.\n                    6 - Return weather conditions from past 6 hours.\n                    24 - Return weather conditions from past 24 hours.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   * @param unit Specifies to return the data in either metric units or imperial units. Default value is metric.\n   */\n  public getCurrentConditions(latitude: number,\n    longitude: number,\n    details?: boolean,\n    duration?: 0 | 6 | 24,\n    language?: string,\n    unit?: Unit\n  ): Observable<CurrentConditionsResponse> {\n\n    let url = this.buildUrl('weather/currentConditions/json');\n    url += `&query=${latitude},${longitude}`;\n\n    if (!(details === null || details === undefined)) {\n      url += `&details=${details}`;\n    }\n\n    if (!(duration === null || duration === undefined)) {\n      url += `&duration=${duration}`;\n    }\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    if (!(unit === null || unit === undefined)) {\n      url += `&unit=${unit};`;\n    }\n\n    return this.httpClient.get<CurrentConditionsResponse>(url);\n\n  }\n\n  /**\n   * The service returns detailed weather forecast such as temperature and wind by day for the next 1, 5, 10, 15, 25, or 45 days for a given coordinate location. The response include details such as temperature, wind, precipitation, air quality, and UV index.\n   *\n   * @param latitude Latitude\n   * @param longitude Longitude\n   * @param duration Specifies for how many days the daily forecast responses are returned. Available values are\n                      1 - Return forecast data for the next day. Returned by default.\n                      5 - Return forecast data for the next 5 days.\n                      10 - Return forecast data for the next 10 days.\n                      25 - Return forecast data for the next 25 days. Only available in S1 SKU.\n                      45 - Return forecast data for the next 45 days. Only available in S1 SKU.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   * @param unit Specifies to return the data in either metric units or imperial units. Default value is metric.\n   */\n  public getDailyForecast(latitude: number,\n    longitude: number,\n    duration?: 1 | 5 | 10 | 25 | 45,\n    language?: string,\n    unit?: Unit\n  ): Observable<DailyForecastResponse> {\n\n    let url = this.buildUrl('weather/forecast/daily/json');\n    url += `&query=${latitude},${longitude}`;\n\n    if (!(duration === null || duration === undefined)) {\n      url += `&duration=${duration}`;\n    }\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    if (!(unit === null || unit === undefined)) {\n      url += `&unit=${unit};`;\n    }\n\n    return this.httpClient.get<DailyForecastResponse>(url);\n  }\n\n  /**\n   * Request detailed weather forecast by the hour for the next 1, 12, 24 (1 day), 72 (3 days), 120 (5 days), and 240 hours (10 days) for the given the given coordinate location. The API returns details such as temperature, humidity, wind, precipitation, and ultraviolet (UV) index.\n   *\n   * @param latitude Latitude\n   * @param longitude Longitude\n   * @param duration Time frame of the returned weather forecast. By default, the forecast data for next hour will be returned. Available values are\n                      1 - Return forecast data for the next hour. Default value.\n                      12 - Return hourly forecast for next 12 hours.\n                      24 - Return hourly forecast for next 24 hours.\n                      72 - Return hourly forecast for next 72 hours (3 days).\n                      120 - Return hourly forecast for next 120 hours (5 days). Only available in S1 SKU.\n                      240 - Return hourly forecast for next 240 hours (10 days). Only available in S1 SKU.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   * @param unit Specifies to return the data in either metric units or imperial units. Default value is metric.\n   */\n  public getHourlyForecast(latitude: number,\n    longitude: number,\n    duration?: 1 | 12 | 24 | 72 | 120 | 240,\n    language?: string,\n    unit?: Unit\n  ): Observable<HourlyForecastResponse> {\n\n    let url = this.buildUrl('weather/forecast/hourly/json');\n    url += `&query=${latitude},${longitude}`;\n\n    if (!(duration === null || duration === undefined)) {\n      url += `&duration=${duration}`;\n    }\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    if (!(unit === null || unit === undefined)) {\n      url += `&unit=${unit};`;\n    }\n\n    return this.httpClient.get<HourlyForecastResponse>(url);\n  }\n\n  /**\n   * Get Minute Forecast service returns minute-by-minute forecasts for a given location for the next 120 minutes. Users can request weather forecasts in the interval of 1, 5 and 15 minutes. The response will include details such as the type of precipitation (including rain, snow, or a mixture of both), start time, and precipitation intensity value (dBZ).\n   *\n   * @param latitude Latitude\n   * @param longitude Longitude\n   * @param interval Specifies time interval in minutes for the returned weather forecast. Supported values are\n                    1 - Retrieve forecast for 1-minute intervals. Returned by default.\n                    5 - Retrieve forecasts for 5-minute intervals.\n                    15 - Retrieve forecasts for 15-minute intervals.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   */\n  public getMinuteForecast(latitude: number,\n    longitude: number,\n    interval?: 1 | 5 | 15,\n    language?: string\n  ): Observable<MinuteForecastResponse> {\n    let url = this.buildUrl('weather/forecast/minute/json');\n    url += `&query=${latitude},${longitude}`;\n\n    if (!(interval === null || interval === undefined)) {\n      url += `&interval=${interval}`;\n    }\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    return this.httpClient.get<MinuteForecastResponse>(url);\n  }\n\n  /**\n   * Service returns detailed weather forecast by quarter-day for the next 1, 5, 10, or 15 days for a given location. Response data is presented by quarters of the day - morning, afternoon, evening, and overnight. Details such as temperature, humidity, wind, precipitation, and UV index are returned.Service returns detailed weather forecast by quarter-day for the next 1, 5, 10, or 15 days for a given location. Response data is presented by quarters of the day - morning, afternoon, evening, and overnight. Details such as temperature, humidity, wind, precipitation, and UV index are returned.\n   *\n   * @param latitude Latitude\n   * @param longitude Longitude\n   * @param duration Specifies for how many days the quester-day forecast responses are returned. Supported values are:\n                      1 - Return forecast data for the next day. Returned by default.\n                      5 - Return forecast data for the next 5 days.\n                      10 - Return forecast data for next 10 days.\n                      15 - Return forecast data for the next 15 days.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   * @param unit Specifies to return the data in either metric units or imperial units. Default value is metric.\n   */\n  public getQuarterDayForecast(latitude: number,\n    longitude: number,\n    duration?: 1 | 5 | 10 | 15,\n    language?: string,\n    unit?: Unit\n  ): Observable<QuarterDayForecastResponse> {\n    let url = this.buildUrl('weather/forecast/quarterDay/json');\n    url += `&query=${latitude},${longitude}`;\n\n    if (!(duration === null || duration === undefined)) {\n      url += `&duration=${duration}`;\n    }\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    if (!(unit === null || unit === undefined)) {\n      url += `&unit=${unit};`;\n    }\n\n    return this.httpClient.get<QuarterDayForecastResponse>(url);\n  }\n\n  /**\n   * Weather along a route API returns hyper local (one kilometer or less), up-to-the-minute weather nowcasts, weather hazard assessments, and notifications along a route described as a sequence of waypoints. This includes a list of weather hazards affecting the waypoint or route, and the aggregated hazard index for each waypoint might be used to paint each portion of a route according to how safe it is for the driver. When submitting the waypoints, it is recommended to stay within, or close to, the distance that can be traveled within 120-mins or shortly after. Data is updated every five minutes.\n    The service supplements Azure Maps Route Service that allows you to first request a route between an origin and a destination and use that as an input for Weather Along Route endpoint.\n    In addition, the service supports scenarios to generate weather notifications for waypoints that experience an increase in intensity of a weather hazard. For example, if the vehicle is expected to begin experiencing heavy rain as it reaches a waypoint, a weather notification for heavy rain will be generated for that waypoint allowing the end product to display a heavy rain notification before the driver reaches that waypoint. The trigger for when to display the notification for a waypoint could be based, for example, on a geofence, or selectable distance to the waypoint.\n    The API covers all regions of the planet except latitudes above Greenland and Antarctica.\n   *\n   * @param waypoints Coordinates through which the route is calculated, separated by colon (:) and entered in chronological order. A minimum of two waypoints is required. A single API call may contain up to 60 waypoints. A waypoint indicates location, ETA, and optional heading.\n   * @param language Language in which search results should be returned. Should be one of supported IETF language tags, case insensitive. When data in specified language is not available for a specific field, default language is used. Default value is en-us.\n   */\n  public getWeatherAlongRoute(waypoints: WaypointInput[],\n    language?: string\n  ): Observable<WeatherAlongRouteResponse> {\n    if (waypoints === null || waypoints === undefined || waypoints.length < 2) {\n      throw new Error('A minimum of two waypoints is required');\n    }\n\n    if (waypoints.length > 60) {\n      throw new Error('A single API call may contain up to 60 waypoints');\n    }\n\n    const query = waypoints.map(waypoint => {\n      let waypointQuery = `${waypoint.latitude},${waypoint.longitude},${waypoint.eta}`;\n      if (waypoint.heading !== null && waypoint.heading !== undefined) {\n        waypointQuery += `,${waypoint.heading}`;\n      }\n\n      return waypointQuery;\n    }).join(':');\n\n    let url = this.buildUrl('weather/route/json');\n    url += `&query=${query}`;\n\n    if (!(language === null || language === undefined)) {\n      url += `&language=${language}`;\n    }\n\n    return this.httpClient.get<WeatherAlongRouteResponse>(url);\n  }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["atlas","i1.PipelineProvider"],"mappings":"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"}