{"version":3,"file":"helgoland-map.mjs","sources":["../../../../projects/helgoland/map/src/lib/base/map-cache.service.ts","../../../../projects/helgoland/map/src/lib/base/map-handler.service.ts","../../../../projects/helgoland/map/src/lib/base/map.module.ts","../../../../projects/helgoland/map/src/lib/base/cached-map-component.ts","../../../../projects/helgoland/map/src/lib/base/configuration/configuration.ts","../../../../projects/helgoland/map/src/lib/base/geosearch/geosearch.ts","../../../../projects/helgoland/map/src/lib/base/geosearch/nominatim.service.ts","../../../../projects/helgoland/map/src/lib/base/geocure/geocure-layer.ts","../../../../projects/helgoland/map/src/lib/view/geometry-map-viewer/geometry-map-viewer.component.ts","../../../../projects/helgoland/map/src/lib/view/geometry-map-viewer/geometry-map-viewer.component.html","../../../../projects/helgoland/map/src/lib/view/module.ts","../../../../projects/helgoland/map/src/lib/control/map-control-component.ts","../../../../projects/helgoland/map/src/lib/control/extent/extent.component.ts","../../../../projects/helgoland/map/src/lib/control/extent/extent.component.html","../../../../projects/helgoland/map/src/lib/control/geosearch/geosearch.component.ts","../../../../projects/helgoland/map/src/lib/control/geosearch/geosearch.component.html","../../../../projects/helgoland/map/src/lib/control/locate/locate.service.ts","../../../../projects/helgoland/map/src/lib/control/locate/locate.component.ts","../../../../projects/helgoland/map/src/lib/control/locate/locate.component.html","../../../../projects/helgoland/map/src/lib/control/zoom/zoom.component.ts","../../../../projects/helgoland/map/src/lib/control/zoom/zoom.component.html","../../../../projects/helgoland/map/src/lib/control/module.ts","../../../../projects/helgoland/map/src/lib/layercontrols/layer-control-component.ts","../../../../projects/helgoland/map/src/lib/layercontrols/layer-opacity-slider/layer-opacity-slider.component.ts","../../../../projects/helgoland/map/src/lib/layercontrols/layer-opacity-slider/layer-opacity-slider.component.html","../../../../projects/helgoland/map/src/lib/layercontrols/layer-visible-toggler/layer-visible-toggler.component.ts","../../../../projects/helgoland/map/src/lib/layercontrols/layer-visible-toggler/layer-visible-toggler.component.html","../../../../projects/helgoland/map/src/lib/layercontrols/module.ts","../../../../projects/helgoland/map/src/lib/selector/map-selector.component.ts","../../../../projects/helgoland/map/src/lib/selector/services/last-value-label-generator.interface.ts","../../../../projects/helgoland/map/src/lib/selector/last-value-map-selector/last-value-map-selector.component.ts","../../../../projects/helgoland/map/src/lib/selector/map-selector.component.html","../../../../projects/helgoland/map/src/lib/selector/platform-map-viewer/platform-map-viewer.component.ts","../../../../projects/helgoland/map/src/lib/selector/platform-map-viewer/platform-map-viewer.component.html","../../../../projects/helgoland/map/src/lib/selector/services/last-value-label-generator.service.ts","../../../../projects/helgoland/map/src/lib/selector/station-map-selector/station-map-selector.component.ts","../../../../projects/helgoland/map/src/lib/selector/trajectory-map-selector/trajectory-map-selector.component.ts","../../../../projects/helgoland/map/src/lib/selector/module.ts","../../../../projects/helgoland/map/src/public-api.ts","../../../../projects/helgoland/map/src/helgoland-map.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as L from 'leaflet';\n\n@Injectable()\nexport class MapCache {\n  private mapCache: Map<string, any> = new Map<string, any>();\n\n  public getMap(id: string): L.Map {\n    return this.mapCache.get(id);\n  }\n\n  public setMap(id: string, map: L.Map) {\n    this.mapCache.set(id, map);\n  }\n\n  public hasMap(id: string): boolean {\n    return this.mapCache.has(id);\n  }\n\n  public deleteMap(id: string): boolean {\n    return this.mapCache.delete(id);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  FeatureGroup,\n  GridLayer,\n  ImageOverlay,\n  Path,\n  Popup,\n  Tooltip,\n} from 'leaflet';\n\nimport { MapCache } from './map-cache.service';\nimport { LayerMap, LayerOptions } from './map-options';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MapHandlerService {\n  constructor(private mapCache: MapCache) {}\n\n  toggleOverlayLayer(layer: LayerOptions, mapId: string) {\n    if (this.mapCache.hasMap(mapId)) {\n      const map = this.mapCache.getMap(mapId);\n      if (layer.visible) {\n        map.removeLayer(layer.layer);\n      } else {\n        map.addLayer(layer.layer);\n      }\n      layer.visible = !layer.visible;\n    }\n  }\n\n  toggleBaseLayer(layer: LayerOptions, baseMaps: LayerMap, mapId: string) {\n    if (!layer.visible) {\n      const map = this.mapCache.getMap(mapId);\n      layer.visible = !layer.visible;\n      // disable all base layer\n      baseMaps.forEach((v) => {\n        v.visible = false;\n        map.removeLayer(v.layer);\n      });\n      // enable current base layer\n      layer.visible = true;\n      map.addLayer(layer.layer);\n      if (\n        layer.layer instanceof ImageOverlay ||\n        layer.layer instanceof GridLayer ||\n        layer.layer instanceof Path ||\n        layer.layer instanceof FeatureGroup ||\n        layer.layer instanceof Popup ||\n        layer.layer instanceof Tooltip\n      ) {\n        layer.layer.bringToBack();\n      }\n    }\n  }\n}\n","import { Type } from '@angular/compiler';\nimport { NgModule } from '@angular/core';\n\nimport { MapCache } from './map-cache.service';\nimport { MapHandlerService } from './map-handler.service';\n\nconst COMPONENTS: Type[] = [];\n\n@NgModule({\n  declarations: [COMPONENTS],\n  imports: [],\n  exports: [COMPONENTS],\n  providers: [MapCache, MapHandlerService],\n})\nexport class HelgolandMapModule {}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n  Directive,\n  DoCheck,\n  EventEmitter,\n  Input,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport * as L from 'leaflet';\n\nimport { MapCache } from './map-cache.service';\nimport { LayerMap, LayerOptions } from './map-options';\n\nconst DEFAULT_BASE_LAYER_NAME = 'BaseLayer';\nconst DEFAULT_BASE_LAYER_URL =\n  'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\nconst DEFAULT_BASE_LAYER_ATTRIBUTION =\n  '&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors';\n\n@Directive()\nexport abstract class CachedMapComponent\n  implements OnChanges, DoCheck, OnDestroy, OnInit\n{\n  /**\n   * A map with the given ID is created inside this component. This ID can be used the get the map instance over the map cache service.\n   */\n  @Input()\n  public mapId!: string;\n\n  /**\n   * The corresponding leaflet map options (see: https://leafletjs.com/reference-1.3.4.html#map-option)\n   */\n  @Input()\n  public mapOptions: L.MapOptions | undefined;\n\n  /**\n   * Bounds for the map\n   */\n  @Input()\n  public fitBounds: L.LatLngBoundsExpression | undefined;\n\n  /**\n   * Map, which holds all overlay map layer (see: https://leafletjs.com/reference-1.3.4.html#layer)\n   */\n  @Input()\n  public overlayMaps: LayerMap | undefined;\n\n  /**\n   * Map, which holds all base map layer (see: https://leafletjs.com/reference-1.3.4.html#layer)\n   */\n  @Input()\n  public baseMaps: LayerMap | undefined;\n\n  /**\n   * Describes the the zoom options (see: https://leafletjs.com/reference-1.3.4.html#control-layers)\n   */\n  @Input()\n  public layerControlOptions: L.Control.LayersOptions | undefined;\n\n  /**\n   * Describes the the zoom control options (see: https://leafletjs.com/reference-1.3.4.html#control-zoom)\n   */\n  @Input()\n  public zoomControlOptions: L.Control.ZoomOptions | undefined;\n\n  /**\n   * Informs when initialization is done with map id.\n   */\n  @Output()\n  public mapInitialized: EventEmitter<string> = new EventEmitter();\n\n  /**\n   * The map object.\n   */\n  protected map: L.Map | undefined;\n\n  protected oldOverlayLayer: L.Control.LayersObject = {};\n  protected oldBaseLayer: L.Control.LayersObject = {};\n  protected layerControl: L.Control.Layers | undefined;\n  protected zoomControl: L.Control.Zoom | undefined;\n\n  private _differOverlayMaps: KeyValueDiffer<string, LayerOptions>;\n  private _differBaseMaps: KeyValueDiffer<string, LayerOptions>;\n\n  constructor(\n    protected mapCache: MapCache,\n    protected kvDiffers: KeyValueDiffers,\n  ) {\n    this._differOverlayMaps = this.kvDiffers.find({}).create();\n    this._differBaseMaps = this.kvDiffers.find({}).create();\n  }\n\n  public ngOnInit(): void {\n    if (this.mapId === undefined || this.mapId === null) {\n      this.mapId = this.generateUUID();\n    }\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (this.map) {\n      if (changes['fitBounds'] && this.fitBounds) {\n        this.map.fitBounds(this.fitBounds);\n      }\n      if (changes['zoomControlOptions']) {\n        this.updateZoomControl();\n      }\n    }\n  }\n\n  public ngDoCheck(): void {\n    if (this._differOverlayMaps && this.overlayMaps) {\n      const changes = this._differOverlayMaps.diff(this.overlayMaps);\n      if (changes) {\n        changes.forEachRemovedItem((e) =>\n          this.removeOverlayMap(e.previousValue),\n        );\n        changes.forEachAddedItem((e) => this.addOverlayMap(e.currentValue));\n        this.updateLayerControl();\n      }\n    }\n    if (this._differBaseMaps && this.baseMaps) {\n      const changes = this._differBaseMaps.diff(this.baseMaps);\n      if (changes) {\n        changes.forEachRemovedItem((e) => this.removeBaseMap(e.previousValue));\n        changes.forEachAddedItem((e) => this.addBaseMap(e.currentValue));\n        this.updateLayerControl();\n      }\n    }\n  }\n\n  public ngOnDestroy(): void {\n    if (this.map) {\n      this.map.remove();\n      this.map = undefined;\n      this.mapCache.deleteMap(this.mapId);\n    }\n  }\n\n  protected createMap(): void {\n    if (!this.mapOptions || this.zoomControlOptions) {\n      this.mapOptions = { zoomControl: false };\n    }\n    this.map = L.map(this.mapId, this.mapOptions);\n    this.mapCache.setMap(this.mapId, this.map);\n    this.mapInitialized.emit(this.mapId);\n    if (this.baseMaps && this.baseMaps.size > 0) {\n      this.baseMaps.forEach((entry, key) => this.addBaseMap(entry));\n    } else {\n      this.addBaseMap();\n    }\n    if (this.overlayMaps) {\n      this.overlayMaps.forEach((entry, key) => this.addOverlayMap(entry));\n    }\n    this.updateZoomControl();\n    this.updateLayerControl();\n    if (this.fitBounds) {\n      this.map.fitBounds(this.fitBounds);\n    }\n  }\n\n  private generateUUID(): string {\n    function s4() {\n      return Math.floor((1 + Math.random()) * 0x10000)\n        .toString(16)\n        .substring(1);\n    }\n    return (\n      s4() +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      '-' +\n      s4() +\n      s4() +\n      s4()\n    );\n  }\n\n  private addOverlayMap(layerOptions: LayerOptions | null) {\n    if (this.map && layerOptions) {\n      if (!this.oldOverlayLayer.hasOwnProperty(layerOptions.label)) {\n        this.oldOverlayLayer[layerOptions.label] = layerOptions.layer;\n        if (layerOptions.visible) {\n          layerOptions.layer.addTo(this.map);\n        }\n      }\n    }\n  }\n\n  private removeOverlayMap(layerOptions: LayerOptions | null) {\n    if (\n      this.map &&\n      layerOptions &&\n      this.oldOverlayLayer.hasOwnProperty(layerOptions.label)\n    ) {\n      this.map.removeLayer(this.oldOverlayLayer[layerOptions.label]);\n      delete this.oldOverlayLayer[layerOptions.label];\n    }\n  }\n\n  private addBaseMap(layerOptions?: LayerOptions | null) {\n    if (this.map) {\n      if (!this.baseMaps || this.baseMaps.size === 0) {\n        layerOptions = {\n          label: DEFAULT_BASE_LAYER_NAME,\n          visible: true,\n          layer: L.tileLayer(DEFAULT_BASE_LAYER_URL, {\n            attribution: DEFAULT_BASE_LAYER_ATTRIBUTION,\n          }),\n        };\n      }\n      if (\n        layerOptions &&\n        !this.oldBaseLayer.hasOwnProperty(layerOptions.label)\n      ) {\n        this.oldBaseLayer[layerOptions.label] = layerOptions.layer;\n        if (layerOptions.visible) {\n          layerOptions.layer.addTo(this.map);\n        }\n      }\n    }\n  }\n\n  private removeBaseMap(layerOptions: LayerOptions | null) {\n    if (\n      this.map &&\n      layerOptions &&\n      this.oldBaseLayer.hasOwnProperty(layerOptions.label)\n    ) {\n      this.map.removeLayer(this.oldBaseLayer[layerOptions.label]);\n      delete this.oldBaseLayer[layerOptions.label];\n    }\n  }\n\n  private updateLayerControl() {\n    if (this.map) {\n      if (this.layerControl) {\n        this.map.removeControl(this.layerControl);\n      }\n      if (\n        this.layerControlOptions &&\n        (Object.keys(this.oldBaseLayer).length > 1 ||\n          Object.keys(this.oldOverlayLayer).length > 0)\n      ) {\n        this.layerControl = L.control\n          .layers(\n            this.oldBaseLayer,\n            this.oldOverlayLayer,\n            this.layerControlOptions,\n          )\n          .addTo(this.map);\n      }\n    }\n  }\n\n  private updateZoomControl() {\n    if (this.map) {\n      if (this.zoomControl) {\n        this.map.removeControl(this.zoomControl);\n      }\n      if (this.zoomControlOptions) {\n        this.zoomControl = L.control\n          .zoom(this.zoomControlOptions)\n          .addTo(this.map);\n      }\n    }\n  }\n}\n","import { tileLayer, TileLayerOptions, WMSOptions } from 'leaflet';\n\nimport { LayerOptions } from '../map-options';\n\nexport interface LayerConfiguration {\n  label: string;\n  visible: boolean;\n  type: string;\n  options: any;\n}\n\nexport interface WmsConfiguration extends LayerConfiguration {\n  type: 'wms';\n  url: string;\n  options: WMSOptions;\n}\n\nexport interface TileLayerConfiguration extends LayerConfiguration {\n  type: 'tilelayer';\n  urlTemplate: string;\n  options: TileLayerOptions;\n}\n\nexport class LayerCreator {\n  public createLayerOptions(layerConf: LayerConfiguration): LayerOptions {\n    switch (layerConf.type) {\n      case 'wms':\n        return this.createWmsLayerOptions(layerConf as WmsConfiguration);\n      case 'tilelayer':\n        return this.createTileLayerOptions(layerConf as TileLayerConfiguration);\n      default:\n        throw new Error(`Unknown layer configuration type: ${layerConf.type}`);\n    }\n  }\n\n  private createWmsLayerOptions(conf: WmsConfiguration) {\n    return {\n      label: conf.label,\n      visible: conf.visible,\n      layer: tileLayer.wms(conf.url, conf.options),\n    };\n  }\n\n  private createTileLayerOptions(conf: TileLayerConfiguration) {\n    return {\n      label: conf.label,\n      visible: conf.visible,\n      layer: tileLayer(conf.urlTemplate, conf.options),\n    };\n  }\n}\n","import { Point } from 'geojson';\nimport { LatLngBoundsLiteral } from 'leaflet';\nimport { Observable } from 'rxjs';\n\nexport interface GeoSearchResult {\n  name: string;\n  geometry: GeoJSON.GeoJsonObject;\n  bounds?: LatLngBoundsLiteral;\n  address?: {\n    city?: string;\n    city_district?: string;\n    construction?: string;\n    continent?: string;\n    country?: string;\n    country_code?: string;\n    house_number?: string;\n    neighbourhood?: string;\n    postcode?: string;\n    public_building?: string;\n    road?: string;\n    state?: string;\n    suburb?: string;\n    town?: string;\n  };\n}\n\nexport interface GeoSearchOptions {\n  acceptLanguage?: string;\n  addressdetails?: boolean;\n  asPointGeometry?: boolean;\n  countrycodes?: string[];\n}\n\nexport interface GeoReverseOptions {\n  acceptLanguage?: string;\n  addressdetails?: boolean;\n  zoom?: number;\n}\n\nexport interface GeoReverseResult {\n  lat: string;\n  lon: string;\n  displayName?: string;\n  address?: {\n    city: string;\n    cityDistrict: string;\n    country: string;\n    countryCode: string;\n    county: string;\n    houseNumber: string;\n    neighbourhood: string;\n    postcode: string;\n    road: string;\n    state: string;\n    stateDistrict: string;\n    suburb: string;\n  };\n  boundingbox?: string[];\n}\n\nexport abstract class GeoSearch {\n  public abstract searchTerm(\n    term: string,\n    options?: GeoSearchOptions,\n  ): Observable<GeoSearchResult>;\n\n  public abstract reverse(\n    point: Point,\n    options?: GeoReverseOptions,\n  ): Observable<GeoReverseResult>;\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { HttpService } from '@helgoland/core';\nimport { Point } from 'geojson';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport {\n  GeoReverseOptions,\n  GeoReverseResult,\n  GeoSearch,\n  GeoSearchOptions,\n  GeoSearchResult,\n} from './geosearch';\n\ninterface NominatimSearchResult {\n  display_name: string;\n  geojson?: GeoJSON.GeoJsonObject;\n  lat: string;\n  lon: string;\n  boundingbox: number[];\n  address?: {\n    city?: string;\n    city_district?: string;\n    construction?: string;\n    continent?: string;\n    country?: string;\n    country_code?: string;\n    house_number?: string;\n    neighbourhood?: string;\n    postcode?: string;\n    public_building?: string;\n    state?: string;\n    suburb?: string;\n  };\n}\n\ninterface Address {\n  address29: string;\n  house_number: string;\n  road: string;\n  neighbourhood: string;\n  suburb: string;\n  city_district: string;\n  city: string;\n  county: string;\n  state_district: string;\n  state: string;\n  postcode: string;\n  country: string;\n  country_code: string;\n}\n\ninterface NominatimReverseResult {\n  place_id: string;\n  licence: string;\n  osm_type: string;\n  osm_id: string;\n  lat: string;\n  lon: string;\n  display_name: string;\n  address: Address;\n  boundingbox: string[];\n}\n\n@Injectable()\nexport class NominatimGeoSearchService implements GeoSearch {\n  protected serviceUrl = 'https://nominatim.openstreetmap.org/';\n\n  constructor(protected http: HttpService) {}\n\n  public searchTerm(\n    term: string,\n    options: GeoSearchOptions = {},\n  ): Observable<GeoSearchResult> {\n    let params = new HttpParams();\n    params = params.set('q', term);\n    params = params.set('format', 'json');\n    params = params.set('limit', '1');\n    if (options.countrycodes) {\n      params = params.set('countrycodes', options.countrycodes.join(','));\n    }\n    if (options.addressdetails !== null) {\n      params = params.set('addressdetails', options.addressdetails ? '1' : '0');\n    }\n    if (options.asPointGeometry !== null) {\n      params = params.set(\n        'polygon_geojson',\n        options.asPointGeometry ? '0' : '1',\n      );\n    }\n    if (options.acceptLanguage) {\n      params = params.set('accept-language', options.acceptLanguage);\n    }\n    return this.http\n      .client()\n      .get<NominatimSearchResult[]>(this.serviceUrl + 'search', { params })\n      .pipe(\n        map((resArray: NominatimSearchResult[]) => {\n          if (resArray.length === 1) {\n            const result = resArray[0];\n            const name = result.display_name;\n            let geometry: GeoJSON.GeoJsonObject;\n            if (result.geojson) {\n              geometry = result.geojson;\n            } else {\n              geometry = {\n                type: 'Point',\n                coordinates: [parseFloat(result.lon), parseFloat(result.lat)],\n              } as GeoJSON.Point;\n            }\n            const returnResult: GeoSearchResult = { name, geometry };\n            if (result.boundingbox) {\n              returnResult.bounds = [\n                [result.boundingbox[0], result.boundingbox[2]],\n                [result.boundingbox[1], result.boundingbox[3]],\n              ];\n            }\n            if (result.address) {\n              returnResult.address = result.address;\n            }\n            return returnResult;\n          }\n          throw new Error('Got no result for corresponding search.');\n        }),\n      );\n  }\n\n  public reverse(\n    point: Point,\n    options: GeoReverseOptions = {},\n  ): Observable<GeoReverseResult> {\n    let params = new HttpParams();\n    params = params.set('lat', point.coordinates[0].toString());\n    params = params.set('lon', point.coordinates[1].toString());\n    params = params.set('format', 'json');\n    if (options && options.addressdetails !== undefined) {\n      params = params.set('addressdetails', options.addressdetails ? '1' : '0');\n    }\n    if (options.acceptLanguage !== undefined) {\n      params = params.set('accept-language', options.acceptLanguage);\n    }\n    if (options && options.zoom !== undefined) {\n      params = params.set('zoom', `${options.zoom}`);\n    }\n    return this.http\n      .client()\n      .get<NominatimReverseResult>(this.serviceUrl + 'reverse', { params })\n      .pipe(\n        map((res: NominatimReverseResult) => {\n          const result = {\n            lat: res.lat,\n            lon: res.lon,\n            displayName: res.display_name,\n            boundingbox: res.boundingbox,\n          } as GeoReverseResult;\n          if (res.address) {\n            result.address = {\n              city: res.address.city,\n              cityDistrict: res.address.city_district,\n              country: res.address.country,\n              countryCode: res.address.country_code,\n              county: res.address.county,\n              houseNumber: res.address.house_number,\n              neighbourhood: res.address.neighbourhood,\n              postcode: res.address.postcode,\n              road: res.address.road,\n              state: res.address.state,\n              stateDistrict: res.address.state_district,\n              suburb: res.address.suburb,\n            };\n          }\n          return result;\n        }),\n      );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n  GeoJSON,\n  GeoJSONOptions,\n  LatLngBounds,\n  LeafletEvent,\n  Map,\n} from 'leaflet';\n\nexport interface GeoCureGeoJSONOptions extends GeoJSONOptions {\n  url: string;\n  httpClient: HttpClient;\n  showOnMinZoom?: number;\n  showOnMaxZoom?: number;\n}\n\nexport class GeoCureGeoJSON extends GeoJSON {\n  public override options: GeoCureGeoJSONOptions;\n\n  constructor(options: GeoCureGeoJSONOptions) {\n    super();\n    this.options = options;\n  }\n\n  public override getEvents() {\n    const events = {\n      moveend: (event: LeafletEvent) => this.fetchData(event.target),\n    };\n    return events;\n  }\n\n  public override onAdd(map: Map): this {\n    super.onAdd(map);\n    this.fetchData(map);\n    return this;\n  }\n\n  private fetchData(map: Map) {\n    const matchMaxZoom = this.options.showOnMaxZoom\n      ? map.getZoom() <= this.options.showOnMaxZoom\n      : true;\n    const matchMinZoom = this.options.showOnMinZoom\n      ? map.getZoom() >= this.options.showOnMinZoom\n      : true;\n    if (matchMinZoom && matchMaxZoom) {\n      this.loadData(map.getBounds());\n    } else {\n      this.clearLayers();\n    }\n  }\n\n  private loadData(bounds: LatLngBounds) {\n    const bboxparam = [\n      bounds.getWest(),\n      bounds.getSouth(),\n      bounds.getEast(),\n      bounds.getNorth(),\n    ].join(',');\n    this.options.httpClient\n      .get<GeoJSON.FeatureCollection<GeoJSON.GeometryObject>>(\n        this.options.url,\n        {\n          params: {\n            bbox: bboxparam,\n          },\n        },\n      )\n      .subscribe((geojson) => {\n        this.clearLayers();\n        this.addData(geojson);\n      });\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  Input,\n  KeyValueDiffers,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\nimport * as L from 'leaflet';\n\nimport { CachedMapComponent } from '../../base/cached-map-component';\nimport { MapCache } from '../../base/map-cache.service';\n\n@Component({\n  selector: 'n52-geometry-map-viewer',\n  templateUrl: './geometry-map-viewer.component.html',\n  styleUrls: ['./geometry-map-viewer.component.scss'],\n  standalone: true,\n})\nexport class GeometryMapViewerComponent\n  extends CachedMapComponent\n  implements AfterViewInit, OnChanges\n{\n  @Input()\n  public highlight: GeoJSON.GeoJsonObject | undefined;\n\n  @Input()\n  public geometry: GeoJSON.GeoJsonObject | undefined;\n\n  @Input()\n  public zoomTo: GeoJSON.GeoJsonObject | undefined;\n\n  @Input()\n  public avoidZoomToGeometry: boolean | undefined;\n\n  @Input()\n  public customMarkerIcon: L.Icon | undefined;\n\n  private highlightGeometryOnMap: L.GeoJSON | undefined;\n  private geometryOnMap: L.GeoJSON | undefined;\n\n  private defaultStyle: L.PathOptions = {\n    color: 'red',\n    weight: 5,\n    opacity: 0.65,\n  };\n\n  private highlightStyle: L.PathOptions = {\n    color: 'blue',\n    weight: 10,\n    opacity: 1,\n  };\n\n  constructor(\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n  ) {\n    super(mapCache, kvDiffers);\n  }\n\n  public ngAfterViewInit() {\n    this.createMap();\n    if (this.map) {\n      this.drawGeometry(this.map);\n      this.showHighlight(this.map);\n    }\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n    if (this.map) {\n      if (changes['highlight'] && changes['highlight'].currentValue) {\n        this.showHighlight(this.map);\n      }\n      if (changes['geometry']) {\n        this.drawGeometry(this.map);\n      }\n      if (changes['zoomTo']) {\n        this.zoomToGeometry(this.map);\n      }\n    }\n  }\n\n  private zoomToGeometry(map: L.Map) {\n    try {\n      const geometry = L.geoJSON(this.zoomTo);\n      map.fitBounds(geometry.getBounds());\n    } catch (err) {\n      console.error(err);\n      return;\n    }\n  }\n\n  private showHighlight(map: L.Map) {\n    if (this.highlightGeometryOnMap) {\n      map.removeLayer(this.highlightGeometryOnMap);\n    }\n    this.highlightGeometryOnMap = L.geoJSON(this.highlight, {\n      pointToLayer: (feature, latlng) => {\n        return L.circleMarker(latlng, this.highlightStyle);\n      },\n    });\n    this.highlightGeometryOnMap.setStyle(this.highlightStyle);\n    this.highlightGeometryOnMap.addTo(map);\n  }\n\n  private drawGeometry(map: L.Map) {\n    if (this.geometry) {\n      if (this.geometryOnMap) {\n        map.removeLayer(this.geometryOnMap);\n      }\n      this.geometryOnMap = L.geoJSON(this.geometry, {\n        pointToLayer: (feature, latlng) => {\n          if (this.customMarkerIcon) {\n            return L.marker(latlng, { icon: this.customMarkerIcon });\n          } else {\n            return L.circleMarker(latlng, this.defaultStyle);\n          }\n        },\n      });\n\n      this.geometryOnMap.setStyle(this.defaultStyle);\n      this.geometryOnMap.addTo(map);\n\n      if (!this.avoidZoomToGeometry) {\n        map.fitBounds(this.geometryOnMap.getBounds());\n      }\n    }\n  }\n}\n","<div [attr.id]=\"mapId\" class=\"map-viewer\"></div>\n","import { NgModule } from '@angular/core';\n\nimport { HelgolandMapModule } from '../base/map.module';\nimport { GeometryMapViewerComponent } from './geometry-map-viewer/geometry-map-viewer.component';\n\n/**\n * The map view module includes the following functionality:\n * - geometry map viewer component\n */\n@NgModule({\n  imports: [HelgolandMapModule, GeometryMapViewerComponent],\n  exports: [GeometryMapViewerComponent],\n  providers: [],\n})\nexport class HelgolandMapViewModule {}\n","import { Directive, Input } from '@angular/core';\n\nimport { MapCache } from '../base/map-cache.service';\n\n@Directive()\nexport abstract class MapControlComponent {\n  /**\n   * Connect map id.\n   */\n  @Input({ required: true }) public mapId!: string;\n\n  constructor(protected mapCache: MapCache) {}\n}\n","import { Component, Input } from '@angular/core';\n\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapControlComponent } from '../map-control-component';\n\n@Component({\n  selector: 'n52-extent-control',\n  templateUrl: './extent.component.html',\n  standalone: true,\n})\nexport class ExtentControlComponent extends MapControlComponent {\n  @Input({ required: true })\n  public extent!: L.LatLngBoundsExpression;\n\n  constructor(protected override mapCache: MapCache) {\n    super(mapCache);\n  }\n\n  public zoomToExtent() {\n    this.mapCache.getMap(this.mapId).fitBounds(this.extent);\n  }\n}\n","<div>\n  <button type=\"button\" (click)=\"zoomToExtent()\">zoom to extent</button>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as L from 'leaflet';\n\nimport {\n  GeoSearch,\n  GeoSearchOptions,\n  GeoSearchResult,\n} from '../../base/geosearch/geosearch';\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapControlComponent } from '../map-control-component';\n\n@Component({\n  selector: 'n52-geosearch-control',\n  templateUrl: './geosearch.component.html',\n  standalone: true,\n  imports: [FormsModule],\n})\nexport class GeosearchControlComponent extends MapControlComponent {\n  /**\n   * Additional search options.\n   */\n  @Input() public options: GeoSearchOptions | undefined;\n\n  /**\n   * Returns the search result.\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() public onResultChanged: EventEmitter<GeoSearchResult> =\n    new EventEmitter();\n\n  /**\n   * Informs, when the search is triggered.\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() public onSearchTriggered: EventEmitter<void> = new EventEmitter();\n\n  public result: GeoSearchResult | undefined;\n\n  public resultGeometry: L.GeoJSON | undefined;\n\n  public searchTerm: string | undefined;\n\n  public loading: boolean | undefined;\n\n  constructor(\n    protected override mapCache: MapCache,\n    protected geosearch: GeoSearch,\n  ) {\n    super(mapCache);\n  }\n\n  public triggerSearch() {\n    this.onSearchTriggered.emit();\n    if (this.resultGeometry) {\n      this.resultGeometry.remove();\n    }\n    if (this.searchTerm) {\n      this.loading = true;\n      this.geosearch.searchTerm(this.searchTerm, this.options).subscribe({\n        next: (result) => {\n          if (!result) {\n            this.searchTerm = '';\n            this.onResultChanged.emit(undefined);\n            return;\n          }\n          this.result = result;\n          if (this.mapId && this.mapCache.getMap(this.mapId)) {\n            this.resultGeometry = L.geoJSON(result.geometry).addTo(\n              this.mapCache.getMap(this.mapId),\n            );\n            if (result.bounds) {\n              this.mapCache.getMap(this.mapId).fitBounds(result.bounds);\n            } else {\n              this.mapCache\n                .getMap(this.mapId)\n                .fitBounds(this.resultGeometry.getBounds());\n            }\n          }\n          this.onResultChanged.emit(result);\n        },\n        error: (error) => {\n          this.searchTerm = 'error occurred';\n          this.onResultChanged.emit(undefined);\n        },\n        complete: () => (this.loading = false),\n      });\n    }\n  }\n\n  public clearSearch() {\n    this.searchTerm = '';\n    this.onResultChanged.emit(undefined);\n    this.removeOldGeometry();\n  }\n\n  private removeOldGeometry() {\n    if (this.resultGeometry) {\n      this.resultGeometry.remove();\n    }\n  }\n}\n","<div>\n  <input [(ngModel)]=\"searchTerm\" (keyup.enter)=\"triggerSearch()\" />\n  @if (loading) {\n    <span>loading...</span>\n  }\n  <button type=\"button\" class=\"btn btn-light btn-sm\" (click)=\"clearSearch()\">\n    X\n  </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport * as L from 'leaflet';\n\nimport { MapCache } from '../../base/map-cache.service';\n\nconst LOCATION_FOUND_EVENT = 'locationfound';\nconst LOCATION_ERROR = 'locationerror';\nconst LOCATED_MARKER_ID = 'located';\n\n@Injectable()\nexport class LocateService {\n  constructor(protected mapCache: MapCache) {}\n\n  public startLocate(id: string) {\n    const map = this.mapCache.getMap(id);\n    map.on(LOCATION_FOUND_EVENT, (evt: L.LocationEvent) => {\n      this.removeMarker(map);\n      const marker = L.marker(evt.latlng).addTo(map);\n      marker.options.title = LOCATED_MARKER_ID;\n    });\n    map.on(LOCATION_ERROR, (error) => {\n      console.error(error);\n    });\n    map.locate({\n      watch: true,\n      setView: true,\n      timeout: 30000,\n    });\n  }\n\n  public stopLocate(id: string) {\n    const map = this.mapCache.getMap(id);\n    map.stopLocate();\n    map.off(LOCATION_FOUND_EVENT);\n    this.removeMarker(map);\n  }\n\n  private removeMarker(map: L.Map) {\n    map.eachLayer((entry) => {\n      if (\n        entry instanceof L.Marker &&\n        entry.options.title === LOCATED_MARKER_ID\n      ) {\n        map.removeLayer(entry);\n      }\n    });\n  }\n}\n","import { Component } from '@angular/core';\n\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapControlComponent } from '../map-control-component';\nimport { LocateService } from './locate.service';\nimport { NgClass } from '@angular/common';\n\n@Component({\n  selector: 'n52-locate-control',\n  templateUrl: './locate.component.html',\n  styleUrls: ['./locate.component.scss'],\n  standalone: true,\n  imports: [NgClass],\n})\nexport class LocateControlComponent extends MapControlComponent {\n  public isToggled = false;\n\n  constructor(\n    protected locateService: LocateService,\n    protected override mapCache: MapCache,\n  ) {\n    super(mapCache);\n  }\n\n  public locateUser() {\n    this.isToggled = !this.isToggled;\n    if (this.isToggled) {\n      this.locateService.startLocate(this.mapId);\n    } else {\n      this.locateService.stopLocate(this.mapId);\n    }\n  }\n}\n","<div class=\"btn-group-vertical btn-group-sm map-control\">\n  <button\n    type=\"button\"\n    class=\"btn btn-sm\"\n    (click)=\"locateUser()\"\n    [ngClass]=\"isToggled ? 'btn-primary' : 'btn-light'\"\n  >\n    locate\n  </button>\n</div>\n","import { MapCache } from './../../base/map-cache.service';\nimport { Component } from '@angular/core';\n\nimport { MapControlComponent } from '../map-control-component';\n\n@Component({\n  selector: 'n52-zoom-control',\n  templateUrl: './zoom.component.html',\n  standalone: true,\n})\nexport class ZoomControlComponent extends MapControlComponent {\n  constructor(protected override mapCache: MapCache) {\n    super(mapCache);\n  }\n\n  public zoomIn() {\n    this.mapCache.getMap(this.mapId).zoomIn();\n  }\n\n  public zoomOut() {\n    this.mapCache.getMap(this.mapId).zoomOut();\n  }\n}\n","<div class=\"btn-group-vertical map-control\">\n  <button type=\"button\" class=\"btn btn-light btn-sm\" (click)=\"zoomIn()\">\n    <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n  </button>\n  <button type=\"button\" class=\"btn btn-light btn-sm\" (click)=\"zoomOut()\">\n    <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n  </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HelgolandCoreModule } from '@helgoland/core';\n\nimport { HelgolandMapModule } from '../base/map.module';\nimport { ExtentControlComponent } from './extent/extent.component';\nimport { GeosearchControlComponent } from './geosearch/geosearch.component';\nimport { LocateControlComponent } from './locate/locate.component';\nimport { LocateService } from './locate/locate.service';\nimport { ZoomControlComponent } from './zoom/zoom.component';\n\nconst COMPONENTS = [\n  LocateControlComponent,\n  ZoomControlComponent,\n  GeosearchControlComponent,\n  ExtentControlComponent,\n];\n\n/**\n * The map controls module includes the following functionality:\n * - different controls for map components\n * - locate control\n * - zoom control\n * - geo search control\n * - extent control\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    HelgolandCoreModule,\n    HelgolandMapModule,\n    COMPONENTS,\n  ],\n  exports: [COMPONENTS],\n  providers: [LocateService],\n})\nexport class HelgolandMapControlModule {}\n","import { Directive, Input } from '@angular/core';\n\nimport { LayerOptions } from '../base/map-options';\n\n@Directive()\nexport abstract class LayerControlComponent {\n  @Input({ required: true })\n  public layeroptions!: LayerOptions;\n\n  @Input({ required: true })\n  public mapId!: string;\n}\n","import { Component, OnChanges, SimpleChanges } from '@angular/core';\nimport { TileLayer } from 'leaflet';\n\nimport { LayerControlComponent } from '../layer-control-component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'n52-layer-opacity-slider',\n  templateUrl: './layer-opacity-slider.component.html',\n  styleUrls: ['./layer-opacity-slider.component.css'],\n  standalone: true,\n  imports: [FormsModule],\n})\nexport class LayerOpacitySliderComponent\n  extends LayerControlComponent\n  implements OnChanges\n{\n  public opacity: number | undefined;\n\n  constructor() {\n    super();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['layeroptions'] &&\n      this.layeroptions.layer instanceof TileLayer &&\n      this.layeroptions.layer.options.opacity\n    ) {\n      this.opacity = this.layeroptions.layer.options.opacity * 100;\n    }\n  }\n\n  setOpacity(o: number) {\n    this.opacity = o;\n    if (this.layeroptions.layer instanceof TileLayer) {\n      this.layeroptions.layer.setOpacity(this.opacity / 100);\n    }\n  }\n}\n","<span>{{ opacity }}</span>\n<input\n  name=\"ram\"\n  type=\"range\"\n  min=\"0\"\n  max=\"100\"\n  [(ngModel)]=\"opacity\"\n  (ngModelChange)=\"setOpacity($event)\"\n  value=\"0\"\n/>\n","import { Component } from '@angular/core';\n\nimport { LayerControlComponent } from '../layer-control-component';\nimport { MapHandlerService } from './../../base/map-handler.service';\n\n@Component({\n  selector: 'n52-layer-visible-toggler',\n  templateUrl: './layer-visible-toggler.component.html',\n  styleUrls: ['./layer-visible-toggler.component.css'],\n  standalone: true,\n})\nexport class LayerVisibleTogglerComponent extends LayerControlComponent {\n  constructor(private mapHandler: MapHandlerService) {\n    super();\n  }\n\n  public toggle() {\n    this.mapHandler.toggleOverlayLayer(this.layeroptions, this.mapId);\n  }\n}\n","<span (click)=\"toggle()\">{{ layeroptions.visible }}</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HelgolandCoreModule } from '@helgoland/core';\n\nimport { HelgolandMapModule } from '../base/map.module';\nimport { LayerOpacitySliderComponent } from './layer-opacity-slider/layer-opacity-slider.component';\nimport { LayerVisibleTogglerComponent } from './layer-visible-toggler/layer-visible-toggler.component';\n\nconst COMPONENTS = [LayerVisibleTogglerComponent, LayerOpacitySliderComponent];\n\n/**\n * The layer controls module includes the following functionality:\n * - controls to handle layer\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    HelgolandCoreModule,\n    HelgolandMapModule,\n    COMPONENTS,\n  ],\n  exports: [COMPONENTS],\n  providers: [],\n})\nexport class HelgolandLayerControlModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  Input,\n  KeyValueDiffers,\n  OnChanges,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { HelgolandParameterFilter } from '@helgoland/core';\nimport * as L from 'leaflet';\n\nimport { CachedMapComponent } from '../base/cached-map-component';\nimport { MapCache } from '../base/map-cache.service';\nimport { MarkerSelectorGenerator } from './model/marker-selector-generator';\n\n@Directive()\nexport abstract class MapSelectorComponent<T>\n  extends CachedMapComponent\n  implements OnChanges, AfterViewInit\n{\n  /**\n   * @input The serviceUrl, where the selection should be loaded.\n   */\n  @Input()\n  public serviceUrl: string | undefined;\n\n  /**\n   * @input The filter which should be used, while fetching the selection.\n   */\n  @Input()\n  public filter: HelgolandParameterFilter | undefined;\n\n  @Input()\n  public avoidZoomToSelection: boolean | undefined;\n\n  @Input()\n  public markerSelectorGenerator: MarkerSelectorGenerator | undefined;\n\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  public onSelected: EventEmitter<T> = new EventEmitter<T>();\n\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  public onContentLoading: EventEmitter<boolean> = new EventEmitter();\n\n  /**\n   * @input Additional configuration for the marker zooming (https://leafletjs.com/reference-1.3.4.html#fitbounds-options)\n   */\n  @Input()\n  public fitBoundsMarkerOptions: L.FitBoundsOptions | undefined;\n\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  public onNoResultsFound: EventEmitter<boolean> = new EventEmitter();\n\n  constructor(\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n    protected cd: ChangeDetectorRef,\n  ) {\n    super(mapCache, kvDiffers);\n  }\n\n  public ngAfterViewInit() {\n    this.createMap();\n    setTimeout(() => {\n      if (this.map && this.serviceUrl)\n        this.drawGeometries(this.map, this.serviceUrl);\n      this.cd.detectChanges();\n    }, 10);\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n    if (changes['serviceUrl'] || changes['filter'] || changes['cluster']) {\n      if (this.map && this.serviceUrl)\n        this.drawGeometries(this.map, this.serviceUrl);\n    }\n  }\n\n  /**\n   * Draws the geometries\n   *\n   * @protected\n   * @abstract\n   */\n  protected abstract drawGeometries(map: L.Map, serviceUrl: string): void;\n\n  /**\n   * Zooms to the given bounds\n   *\n   * @protected\n   * @param bounds where to zoom\n   */\n  protected zoomToMarkerBounds(bounds: L.LatLngBoundsExpression, map: L.Map) {\n    if (!this.avoidZoomToSelection && map) {\n      map.fitBounds(bounds, this.fitBoundsMarkerOptions || {});\n    }\n  }\n}\n","import { HelgolandTimeseries } from '@helgoland/core';\n\nexport const enum LastValuePresentation {\n  /**\n   * colorized circle depending on status intervals\n   */\n  Colorized,\n  /**\n   * textual presentation of the last value, done with LastValueLabelGenerator\n   */\n  Textual,\n}\n\nexport abstract class LastValueLabelGenerator {\n  /**\n   * Creates an icon label based on a given timeseries.\n   */\n  public abstract createIconLabel(\n    ts: HelgolandTimeseries,\n  ): L.DivIcon | undefined;\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  Input,\n  IterableDiffer,\n  IterableDiffers,\n  KeyValueDiffers,\n  OnChanges,\n} from '@angular/core';\nimport {\n  DatasetType,\n  HelgolandServicesConnector,\n  HelgolandTimeseries,\n  StatusIntervalResolverService,\n} from '@helgoland/core';\nimport {\n  circleMarker,\n  featureGroup,\n  geoJSON,\n  Layer,\n  Map,\n  Marker,\n  marker,\n} from 'leaflet';\nimport { forkJoin, Observable, Observer } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\n\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapSelectorComponent } from '../map-selector.component';\nimport {\n  LastValueLabelGenerator,\n  LastValuePresentation,\n} from '../services/last-value-label-generator.interface';\n\n/**\n * Displays selectable series with their last values on an map.\n */\n@Component({\n  selector: 'n52-last-value-map-selector',\n  templateUrl: '../map-selector.component.html',\n  styleUrls: ['../map-selector.component.scss'],\n  standalone: true,\n})\nexport class LastValueMapSelectorComponent\n  extends MapSelectorComponent<HelgolandTimeseries>\n  implements AfterViewInit, DoCheck, OnChanges\n{\n  /**\n   * The list of internal series IDs, which should be presented with their last values on the map.\n   */\n  @Input()\n  public lastValueSeriesIDs: string[] = [];\n\n  /**\n   * Presentation type how to display the series.\n   */\n  @Input()\n  public lastValuePresentation: LastValuePresentation =\n    LastValuePresentation.Colorized;\n\n  /**\n   * Ignores all Statusintervals where the timestamp is before a given duration in milliseconds and draws instead the default marker.\n   */\n  @Input()\n  public ignoreStatusIntervalIfBeforeDuration = Infinity;\n\n  private _lastValueSeriesIDsDiff: IterableDiffer<string>;\n\n  private markerFeatureGroup: L.FeatureGroup<Marker> = featureGroup();\n\n  constructor(\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n    protected iDiffers: IterableDiffers,\n    protected override cd: ChangeDetectorRef,\n    protected servicesConnector: HelgolandServicesConnector,\n    protected lastValueLabelGenerator: LastValueLabelGenerator,\n    protected statusIntervalResolver: StatusIntervalResolverService,\n  ) {\n    super(mapCache, kvDiffers, cd);\n    this._lastValueSeriesIDsDiff = this.iDiffers\n      .find(this.lastValueSeriesIDs)\n      .create();\n  }\n\n  public override ngDoCheck() {\n    super.ngDoCheck();\n    const changes = this._lastValueSeriesIDsDiff.diff(this.lastValueSeriesIDs);\n\n    if (changes && this.map) {\n      const ids: string[] = [];\n      changes.forEachAddedItem((record) => {\n        ids.push(record.item);\n      });\n      this.createMarkersBySeriesIDs(ids, this.map);\n\n      changes.forEachRemovedItem((record) => {\n        this.removeMarker(record.item);\n      });\n    }\n  }\n\n  protected drawGeometries(map: Map, serviceUrl: string): void {\n    this.onContentLoading.emit(true);\n    if (this.lastValueSeriesIDs && this.lastValueSeriesIDs.length) {\n      this.createMarkersBySeriesIDs(this.lastValueSeriesIDs, map);\n    }\n  }\n\n  private createMarkersBySeriesIDs(ids: string[], map: L.Map) {\n    const obsList: Array<Observable<any>> = [];\n    ids.forEach((id) => {\n      const tsObs = this.servicesConnector.getDataset(id, {\n        type: DatasetType.Timeseries,\n      });\n      obsList.push(\n        tsObs.pipe(\n          switchMap((val) =>\n            this.createMarker(val).pipe(\n              tap((res) => {\n                this.markerFeatureGroup.addLayer(res);\n                res.on('click', () => this.onSelected.emit(val));\n              }),\n            ),\n          ),\n        ),\n      );\n    });\n    this.finalizeMarkerObservables(obsList, map);\n  }\n\n  private createMarker(ts: HelgolandTimeseries): Observable<Layer> {\n    switch (this.lastValuePresentation) {\n      case LastValuePresentation.Colorized:\n        return this.createColorizedMarker(ts);\n      case LastValuePresentation.Textual:\n        return this.createLabeledMarker(ts);\n    }\n    return this.createColorizedMarker(ts);\n  }\n\n  private finalizeMarkerObservables(obsList: Observable<any>[], map: L.Map) {\n    forkJoin(obsList).subscribe(() => {\n      const bounds = this.markerFeatureGroup.getBounds();\n      this.zoomToMarkerBounds(bounds, map);\n      map.invalidateSize();\n      this.onContentLoading.emit(false);\n    });\n    this.markerFeatureGroup.addTo(map);\n  }\n\n  private createColorizedMarker(ts: HelgolandTimeseries): Observable<Layer> {\n    return new Observable<Layer>((observer: Observer<Layer>) => {\n      this.servicesConnector.getDatasetExtras(ts).subscribe((extras) => {\n        let coloredMarker: Layer | undefined = undefined;\n        if (extras.statusIntervals) {\n          if (\n            ts.lastValue &&\n            ts.lastValue.value &&\n            ts.lastValue.timestamp >\n              new Date().getTime() - this.ignoreStatusIntervalIfBeforeDuration\n          ) {\n            const interval = this.statusIntervalResolver.getMatchingInterval(\n              ts.lastValue.value,\n              extras.statusIntervals,\n            );\n            if (interval) {\n              coloredMarker = this.createColoredMarker(ts, interval.color);\n            }\n          }\n        }\n        if (!coloredMarker) {\n          coloredMarker = this.createDefaultColoredMarker(ts);\n        }\n        this.setId(coloredMarker, ts.internalId);\n        observer.next(coloredMarker);\n        observer.complete();\n      });\n    });\n  }\n\n  private createColoredMarker(ts: HelgolandTimeseries, color: string): Layer {\n    return this.createFilledMarker(ts, color, 10);\n  }\n\n  private createDefaultColoredMarker(ts: HelgolandTimeseries): Layer {\n    return this.createFilledMarker(ts, '#000', 10);\n  }\n\n  private createFilledMarker(\n    ts: HelgolandTimeseries,\n    color: string,\n    radius: number,\n  ): Layer {\n    let geometry: Layer;\n    if (ts.platform.geometry?.type === 'Point') {\n      const point = ts.platform.geometry as GeoJSON.Point;\n      geometry = circleMarker([point.coordinates[1], point.coordinates[0]], {\n        color: '#000',\n        fillColor: color,\n        fillOpacity: 0.8,\n        radius: 10,\n        weight: 2,\n      });\n    } else {\n      geometry = geoJSON(ts.platform.geometry, {\n        style: () => ({\n          color: '#000',\n          fillColor: color,\n          fillOpacity: 0.8,\n          weight: 2,\n        }),\n      });\n    }\n    if (geometry) {\n      geometry.on('click', () => this.onSelected.emit(ts));\n      return geometry;\n    }\n    throw new Error('Could not create geometry');\n  }\n\n  private createLabeledMarker(ts: HelgolandTimeseries): Observable<Marker> {\n    return new Observable<Marker>((observer) => {\n      const icon = this.lastValueLabelGenerator.createIconLabel(ts);\n      if (ts.platform.geometry?.type === 'Point') {\n        const point = ts.platform.geometry as GeoJSON.Point;\n        const genMarker = marker([point.coordinates[1], point.coordinates[0]], {\n          icon,\n        });\n        this.setId(genMarker, ts.internalId);\n        observer.next(genMarker);\n        observer.complete();\n      }\n    });\n  }\n\n  private setId(m: Layer, id: string) {\n    if (m instanceof Marker) {\n      // m.feature = {\n      //   id,\n      //   type: 'Feature',\n      //   properties: null,\n      //   geometry: null\n      // };\n    }\n  }\n\n  private removeMarker(markerId: string) {\n    let searchedLayer;\n    this.markerFeatureGroup.eachLayer((layer) => {\n      if ((layer as Marker).feature?.id === markerId) {\n        searchedLayer = layer;\n      }\n    });\n    if (searchedLayer) {\n      this.markerFeatureGroup.removeLayer(searchedLayer);\n    }\n  }\n}\n","<div class=\"map-wrapper\" style=\"height: 100%\">\n  <div [attr.id]=\"mapId\" class=\"map-viewer\"></div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  KeyValueDiffers,\n  OnChanges,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { HelgolandPlatform } from '@helgoland/core';\nimport { Feature } from 'geojson';\nimport * as L from 'leaflet';\n\nimport { CachedMapComponent } from '../../base/cached-map-component';\nimport { MapCache } from '../../base/map-cache.service';\n\n@Component({\n  selector: 'n52-platform-map-viewer',\n  templateUrl: './platform-map-viewer.component.html',\n  styleUrls: ['./platform-map-viewer.component.scss'],\n  standalone: true,\n})\nexport class PlatformMapViewerComponent\n  extends CachedMapComponent\n  implements AfterViewInit, OnChanges\n{\n  @Input() public platforms: HelgolandPlatform[] | undefined;\n\n  @Input() public customMarkerIcon: L.Icon | undefined;\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() public onSelectedPlatform: EventEmitter<HelgolandPlatform> =\n    new EventEmitter();\n\n  private geometryOnMap: L.GeoJSON | undefined;\n\n  private layer: L.MarkerClusterGroup | undefined;\n\n  constructor(\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n  ) {\n    super(mapCache, kvDiffers);\n  }\n\n  ngAfterViewInit(): void {\n    this.createMap();\n    if (this.map) this.drawPlatforms(this.map);\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n    if (this.map) {\n      if (changes['platforms']) {\n        this.drawPlatforms(this.map);\n      }\n    }\n  }\n\n  private drawPlatforms(map: L.Map) {\n    if (this.platforms) {\n      if (this.layer) {\n        map.removeLayer(this.layer);\n      }\n      this.layer = L.markerClusterGroup({ animate: false });\n\n      this.geometryOnMap = L.geoJSON(undefined, {\n        pointToLayer: (feature, latlng) => {\n          if (this.customMarkerIcon) {\n            return L.marker(latlng, { icon: this.customMarkerIcon });\n          } else {\n            return L.marker(latlng);\n          }\n        },\n        onEachFeature: (feature, layer) => {\n          layer.bindTooltip(feature.properties?.platform?.label);\n          layer.on('click', (evt) => {\n            console.log(evt.target.feature.id);\n            this.onSelectedPlatform.emit(\n              evt.target.feature.properties.platform,\n            );\n          });\n        },\n      });\n\n      this.platforms.forEach((e) => {\n        if (e.geometry) {\n          const feature: Feature = {\n            geometry: e.geometry,\n            id: e.id,\n            properties: {\n              platform: e,\n            },\n            type: 'Feature',\n          };\n          this.geometryOnMap!.addData(feature);\n        }\n      });\n      this.layer.addLayer(this.geometryOnMap);\n      map.addLayer(this.layer);\n      map.fitBounds(this.geometryOnMap.getBounds());\n    }\n  }\n}\n","<div [attr.id]=\"mapId\" class=\"map-viewer\"></div>\n","import { Injectable } from '@angular/core';\nimport { HelgolandTimeseries } from '@helgoland/core';\nimport * as L from 'leaflet';\nimport moment from 'moment';\n\nimport { LastValueLabelGenerator } from './last-value-label-generator.interface';\n\n@Injectable()\nexport class LastValueLabelGeneratorService extends LastValueLabelGenerator {\n  constructor() {\n    super();\n  }\n\n  public createIconLabel(ts: HelgolandTimeseries) {\n    if (ts.lastValue) {\n      const date = moment(ts.lastValue.timestamp).fromNow();\n      return L.divIcon({\n        className: 'last-value-container',\n        html: `<span class=\"last-value-label\">${ts.lastValue.value}&nbsp;${ts.uom}</span><br><span class=\"last-value-date\">${date}</span>`,\n      });\n    }\n    return undefined;\n  }\n}\n","import 'leaflet.markercluster';\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  KeyValueDiffers,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  DatasetType,\n  HelgolandPlatform,\n  HelgolandServicesConnector,\n  HelgolandTimeseries,\n  StatusIntervalResolverService,\n  TimeseriesExtras,\n} from '@helgoland/core';\nimport GeoJSON from 'geojson';\nimport L, { Layer } from 'leaflet';\nimport { forkJoin, Observable } from 'rxjs';\n\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapSelectorComponent } from '../map-selector.component';\n\n@Component({\n  selector: 'n52-station-map-selector',\n  templateUrl: '../map-selector.component.html',\n  styleUrls: ['../map-selector.component.scss'],\n  standalone: true,\n})\nexport class StationMapSelectorComponent\n  extends MapSelectorComponent<HelgolandPlatform>\n  implements OnChanges, AfterViewInit\n{\n  @Input()\n  public cluster: boolean | undefined;\n\n  @Input()\n  public clusterConfig: L.MarkerClusterGroupOptions | undefined;\n\n  @Input()\n  public statusIntervals: boolean | undefined;\n\n  /**\n   * Ignores all Statusintervals where the timestamp is before a given duration in milliseconds and draws instead the default marker.\n   */\n  @Input()\n  public ignoreStatusIntervalIfBeforeDuration = Infinity;\n\n  protected markerFeatureGroup: L.FeatureGroup | undefined;\n\n  constructor(\n    protected statusIntervalResolver: StatusIntervalResolverService,\n    protected servicesConnector: HelgolandServicesConnector,\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n    protected override cd: ChangeDetectorRef,\n  ) {\n    super(mapCache, kvDiffers, cd);\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n    if (this.map && this.serviceUrl && changes['statusIntervals']) {\n      this.drawGeometries(this.map, this.serviceUrl);\n    }\n  }\n\n  protected drawGeometries(map: L.Map, serviceUrl: string) {\n    this.onContentLoading.emit(true);\n    if (this.markerFeatureGroup) {\n      map.removeLayer(this.markerFeatureGroup);\n    }\n    if (this.statusIntervals && this.filter && this.filter.phenomenon) {\n      this.createValuedMarkers(serviceUrl, map);\n    } else {\n      this.createStationGeometries(serviceUrl, map);\n    }\n  }\n\n  protected createValuedMarkers(serviceUrl: string, map: L.Map) {\n    this.servicesConnector\n      .getDatasets(serviceUrl, {\n        phenomenon: this.filter?.phenomenon,\n        expanded: true,\n        type: DatasetType.Timeseries,\n      })\n      .subscribe({\n        next: (datasets: HelgolandTimeseries[]) => {\n          this.markerFeatureGroup = L.featureGroup();\n          const obsList: Array<Observable<TimeseriesExtras>> = [];\n          datasets.forEach((ts: HelgolandTimeseries) => {\n            const obs = this.servicesConnector.getDatasetExtras(ts.internalId);\n            obsList.push(obs);\n            obs.subscribe((extras: TimeseriesExtras) => {\n              let marker;\n              if (extras.statusIntervals) {\n                if (\n                  ts.lastValue?.timestamp &&\n                  ts.lastValue.value &&\n                  ts.lastValue.timestamp >\n                    new Date().getTime() -\n                      this.ignoreStatusIntervalIfBeforeDuration\n                ) {\n                  const interval =\n                    this.statusIntervalResolver.getMatchingInterval(\n                      ts.lastValue.value,\n                      extras.statusIntervals,\n                    );\n                  if (interval) {\n                    marker = this.createColoredMarker(\n                      ts.platform,\n                      interval.color,\n                    );\n                  }\n                }\n              }\n              if (!marker) {\n                marker = this.createDefaultColoredMarker(ts.platform);\n              }\n              marker.on('click', () => {\n                this.onSelected.emit(ts.platform);\n              });\n              this.markerFeatureGroup!.addLayer(marker);\n            });\n          });\n\n          forkJoin(obsList).subscribe(() => {\n            this.zoomToMarkerBounds(this.markerFeatureGroup!.getBounds(), map);\n            map.invalidateSize();\n            this.onContentLoading.emit(false);\n          });\n\n          this.markerFeatureGroup.addTo(map);\n        },\n        error: (error) => console.error(error),\n      });\n  }\n\n  protected createColoredMarker(\n    station: HelgolandPlatform,\n    color: string,\n  ): Layer {\n    if (\n      this.markerSelectorGenerator &&\n      this.markerSelectorGenerator.createFilledMarker\n    ) {\n      return this.markerSelectorGenerator.createFilledMarker(station, color);\n    }\n    return this.createFilledMarker(station, color, 10);\n  }\n\n  protected createDefaultColoredMarker(station: HelgolandPlatform): Layer {\n    if (\n      this.markerSelectorGenerator &&\n      this.markerSelectorGenerator.createDefaultFilledMarker\n    ) {\n      return this.markerSelectorGenerator.createDefaultFilledMarker(station);\n    }\n    return this.createFilledMarker(station, '#000', 10);\n  }\n\n  protected createFilledMarker(\n    station: HelgolandPlatform,\n    color: string,\n    radius: number,\n  ): Layer {\n    let geometry: Layer;\n    if (station.geometry?.type === 'Point') {\n      const point = station.geometry as GeoJSON.Point;\n      geometry = L.circleMarker([point.coordinates[1], point.coordinates[0]], {\n        color: '#000',\n        fillColor: color,\n        fillOpacity: 0.8,\n        radius: 10,\n        weight: 2,\n      });\n    } else {\n      geometry = L.geoJSON(station.geometry, {\n        style: (feature) => ({\n          color: '#000',\n          fillColor: color,\n          fillOpacity: 0.8,\n          weight: 2,\n        }),\n      });\n    }\n    if (geometry) {\n      geometry.on('click', () => this.onSelected.emit(station));\n      return geometry;\n    }\n    throw new Error('Could not create geometry');\n  }\n\n  protected createStationGeometries(serviceUrl: string, map: L.Map) {\n    this.servicesConnector.getPlatforms(serviceUrl, this.filter).subscribe({\n      next: (res) => {\n        if (this.cluster) {\n          this.markerFeatureGroup = L.markerClusterGroup({\n            animate: true,\n            ...this.clusterConfig,\n          });\n        } else {\n          this.markerFeatureGroup = L.featureGroup();\n        }\n        if (res instanceof Array && res.length > 0) {\n          res.forEach((entry) => {\n            const marker = this.createDefaultGeometry(entry);\n            if (marker) {\n              this.markerFeatureGroup!.addLayer(marker);\n            }\n          });\n          this.markerFeatureGroup.addTo(map);\n          this.zoomToMarkerBounds(this.markerFeatureGroup.getBounds(), map);\n        } else {\n          this.onNoResultsFound.emit(true);\n        }\n        map.invalidateSize();\n        this.onContentLoading.emit(false);\n      },\n      error: (error) => {\n        console.error(error);\n        map.setView([0, 0], 1);\n        this.onContentLoading.emit(false);\n      },\n    });\n  }\n\n  protected createDefaultGeometry(\n    station: HelgolandPlatform,\n  ): Layer | undefined {\n    let layer: Layer | undefined = undefined;\n    if (\n      this.markerSelectorGenerator &&\n      this.markerSelectorGenerator.createDefaultGeometry\n    ) {\n      layer = this.markerSelectorGenerator.createDefaultGeometry(station);\n    } else if (station.geometry) {\n      layer = L.geoJSON(station.geometry);\n    } else {\n      console.error(station.id + ' has no geometry');\n    }\n    // register click event\n    if (layer) {\n      layer.on('click', () => this.onSelected.emit(station));\n    }\n    return layer;\n  }\n}\n","import 'leaflet.markercluster';\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  KeyValueDiffers,\n  OnChanges,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  HelgolandDataset,\n  HelgolandProfile,\n  HelgolandProfileData,\n  HelgolandServicesConnector,\n  LocatedProfileDataEntry,\n  Timespan,\n} from '@helgoland/core';\nimport L from 'leaflet';\n\nimport { MapCache } from '../../base/map-cache.service';\nimport { MapSelectorComponent } from '../map-selector.component';\nimport { TrajectoryResult } from '../model/trajectory-result';\n\n@Component({\n  selector: 'n52-profile-trajectory-map-selector',\n  templateUrl: '../map-selector.component.html',\n  styleUrls: ['../map-selector.component.scss'],\n  standalone: true,\n})\nexport class ProfileTrajectoryMapSelectorComponent\n  extends MapSelectorComponent<TrajectoryResult>\n  implements OnChanges, AfterViewInit\n{\n  @Input({ required: true })\n  public selectedTimespan!: Timespan;\n\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  public onTimeListDetermined: EventEmitter<number[]> = new EventEmitter();\n\n  private layer: L.FeatureGroup = this.initLayer();\n  private data: LocatedProfileDataEntry[] = [];\n  private dataset: HelgolandDataset | undefined;\n\n  private defaultStyle: L.PathOptions = {\n    color: 'red',\n    weight: 5,\n    opacity: 0.65,\n  };\n\n  private highlightStyle: L.PathOptions = {\n    color: 'blue',\n    weight: 7,\n    opacity: 1,\n  };\n\n  constructor(\n    protected servicesConnector: HelgolandServicesConnector,\n    protected override mapCache: MapCache,\n    protected override kvDiffers: KeyValueDiffers,\n    protected override cd: ChangeDetectorRef,\n  ) {\n    super(mapCache, kvDiffers, cd);\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n    if (changes['selectedTimespan'] && this.selectedTimespan && this.map) {\n      this.clearMap(this.map);\n      this.data.forEach((entry) => {\n        if (\n          this.dataset &&\n          this.selectedTimespan.from <= entry.timestamp &&\n          entry.timestamp <= this.selectedTimespan.to\n        ) {\n          this.layer.addLayer(this.createGeoJson(entry, this.dataset));\n        }\n      });\n      this.layer.addTo(this.map);\n    }\n  }\n\n  protected drawGeometries(map: L.Map, serviceUrl: string): void {\n    this.onContentLoading.emit(true);\n    if (!serviceUrl || !map) {\n      return;\n    }\n    this.servicesConnector\n      .getDatasets(serviceUrl, { ...this.filter, expanded: true })\n      .subscribe((datasets) => {\n        datasets.forEach((dataset) => {\n          if (\n            dataset instanceof HelgolandProfile &&\n            dataset.firstValue &&\n            dataset.lastValue\n          ) {\n            this.dataset = dataset;\n            const timespan = new Timespan(\n              dataset.firstValue.timestamp,\n              dataset.lastValue.timestamp,\n            );\n            this.servicesConnector\n              .getDatasetData(dataset, timespan)\n              .subscribe((data: HelgolandProfileData) => {\n                if (data.values instanceof Array) {\n                  this.initLayer();\n                  this.data = [];\n                  const timelist: number[] = [];\n                  (data.values as LocatedProfileDataEntry[]).forEach(\n                    (entry) => {\n                      this.data.push(entry);\n                      const geojson = this.createGeoJson(entry, dataset);\n                      timelist.push(entry.timestamp);\n                      this.layer.addLayer(geojson);\n                    },\n                  );\n                  this.onTimeListDetermined.emit(timelist);\n                  this.layer.addTo(map);\n                  this.zoomToMarkerBounds(this.layer.getBounds(), map);\n                }\n                this.onContentLoading.emit(false);\n              });\n          }\n        });\n      });\n  }\n\n  private initLayer() {\n    return L.markerClusterGroup({ animate: false });\n  }\n\n  private clearMap(map: L.Map) {\n    if (map && this.layer) {\n      map.removeLayer(this.layer);\n    }\n  }\n\n  private createGeoJson(\n    profileDataEntry: LocatedProfileDataEntry,\n    dataset: HelgolandDataset,\n  ): L.GeoJSON {\n    const geojson = new L.GeoJSON(profileDataEntry.geometry);\n    geojson.setStyle(this.defaultStyle);\n    geojson.on('click', () => {\n      this.onSelected.emit({\n        dataset,\n        data: profileDataEntry,\n      });\n    });\n    geojson.on('mouseover', () => {\n      geojson.setStyle(this.highlightStyle);\n      geojson.bringToFront();\n    });\n    geojson.on('mouseout', () => {\n      geojson.setStyle(this.defaultStyle);\n    });\n    return geojson;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { HelgolandCoreModule } from '@helgoland/core';\n\nimport { HelgolandMapModule } from '../base/map.module';\nimport { LastValueMapSelectorComponent } from './last-value-map-selector/last-value-map-selector.component';\nimport { PlatformMapViewerComponent } from './platform-map-viewer/platform-map-viewer.component';\nimport { LastValueLabelGenerator } from './services/last-value-label-generator.interface';\nimport { LastValueLabelGeneratorService } from './services/last-value-label-generator.service';\nimport { StationMapSelectorComponent } from './station-map-selector/station-map-selector.component';\nimport { ProfileTrajectoryMapSelectorComponent } from './trajectory-map-selector/trajectory-map-selector.component';\n\nconst COMPONENTS = [\n  StationMapSelectorComponent,\n  ProfileTrajectoryMapSelectorComponent,\n  LastValueMapSelectorComponent,\n  PlatformMapViewerComponent,\n];\n\nexport interface HelgolandMapSelectorModuleConfig {\n  lastValueLabelGeneratorService: Type<LastValueLabelGenerator>;\n}\n\n/**\n * The map selector module includes the following functionality:\n * - map based selection\n */\n@NgModule({\n  imports: [CommonModule, HelgolandCoreModule, HelgolandMapModule, COMPONENTS],\n  exports: [COMPONENTS],\n  providers: [\n    {\n      provide: LastValueLabelGenerator,\n      useClass: LastValueLabelGeneratorService,\n    },\n  ],\n})\nexport class HelgolandMapSelectorModule {\n  static forRoot(\n    config?: HelgolandMapSelectorModuleConfig,\n  ): ModuleWithProviders<HelgolandMapSelectorModule> {\n    return {\n      ngModule: HelgolandMapSelectorModule,\n      providers: [\n        {\n          provide: LastValueLabelGenerator,\n          useClass:\n            (config && config.lastValueLabelGeneratorService) ||\n            LastValueLabelGeneratorService,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of map\n */\n\nexport * from './lib/base/map.module';\nexport * from './lib/base/map-cache.service';\nexport * from './lib/base/map-handler.service';\nexport * from './lib/base/map-options';\nexport * from './lib/base/cached-map-component';\nexport * from './lib/base/configuration/configuration';\nexport * from './lib/base/geosearch/geosearch';\nexport * from './lib/base/geosearch/nominatim.service';\nexport * from './lib/base/geocure/geocure-layer';\n\nexport * from './lib/view/module';\nexport * from './lib/view/geometry-map-viewer/geometry-map-viewer.component';\n\nexport * from './lib/control/module';\nexport * from './lib/control/map-control-component';\nexport * from './lib/control/extent/extent.component';\nexport * from './lib/control/geosearch/geosearch.component';\nexport * from './lib/control/locate/locate.component';\nexport * from './lib/control/locate/locate.service';\nexport * from './lib/control/zoom/zoom.component';\n\nexport * from './lib/layercontrols/module';\nexport * from './lib/layercontrols/layer-control-component';\nexport * from './lib/layercontrols/layer-opacity-slider/layer-opacity-slider.component';\nexport * from './lib/layercontrols/layer-visible-toggler/layer-visible-toggler.component';\n\nexport * from './lib/selector/module';\nexport * from './lib/selector/map-selector.component';\nexport * from './lib/selector/model/trajectory-result';\nexport * from './lib/selector/model/marker-selector-generator';\nexport * from './lib/selector/station-map-selector/station-map-selector.component';\nexport * from './lib/selector/last-value-map-selector/last-value-map-selector.component';\nexport * from './lib/selector/trajectory-map-selector/trajectory-map-selector.component';\nexport * from './lib/selector/services/last-value-label-generator.service';\nexport * from './lib/selector/services/last-value-label-generator.interface';\nexport * from './lib/selector/platform-map-viewer/platform-map-viewer.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapCache","COMPONENTS","i2.GeoSearch","i3","i1.LocateService","i2.MapCache","i1","i1.MapHandlerService","i2","i3.LastValueLabelGenerator","L"],"mappings":"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"}