@geotrekce/geotrek-rando-widget 0.35.2 → 0.35.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/grw-common-button_23.cjs.entry.js +6 -5
- package/dist/cjs/grw-common-button_23.cjs.entry.js.br +0 -0
- package/dist/cjs/grw-common-button_23.cjs.entry.js.gz +0 -0
- package/dist/cjs/grw-common-button_23.cjs.entry.js.map +1 -1
- package/dist/collection/components/grw-map/grw-map.js +6 -5
- package/dist/collection/components/grw-map/grw-map.js.br +0 -0
- package/dist/collection/components/grw-map/grw-map.js.gz +0 -0
- package/dist/collection/components/grw-map/grw-map.js.map +1 -1
- package/dist/esm/grw-common-button_23.entry.js +6 -5
- package/dist/esm/grw-common-button_23.entry.js.br +0 -0
- package/dist/esm/grw-common-button_23.entry.js.gz +0 -0
- package/dist/esm/grw-common-button_23.entry.js.map +1 -1
- package/dist/esm-es5/grw-common-button_23.entry.js +1 -1
- package/dist/esm-es5/grw-common-button_23.entry.js.br +0 -0
- package/dist/esm-es5/grw-common-button_23.entry.js.gz +0 -0
- package/dist/esm-es5/grw-common-button_23.entry.js.map +1 -1
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-4c329d4c.system.entry.js +4 -0
- package/dist/geotrek-rando-widget/p-4c329d4c.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-4c329d4c.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-4c329d4c.system.entry.js.map +1 -0
- package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js +1 -1
- package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js.br +0 -0
- package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-cb681dae.entry.js +4 -0
- package/dist/geotrek-rando-widget/p-cb681dae.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-cb681dae.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-cb681dae.entry.js.map +1 -0
- package/package.json +1 -1
- package/dist/geotrek-rando-widget/p-03eb939f.entry.js +0 -4
- package/dist/geotrek-rando-widget/p-03eb939f.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-03eb939f.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-03eb939f.entry.js.map +0 -1
- package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js +0 -4
- package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen, Element, forceUpdate } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-i18n';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport '../../utils/leaflet-simple-locate.min.js';\nimport state, { onChange } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport { getDataInStore } from 'services/grw-db.service';\nimport { checkFileInStore, getFileInStore } from 'utils/utils';\nimport { Capacitor } from '@capacitor/core';\nimport { Directory, Filesystem } from '@capacitor/filesystem';\nimport { Trek } from 'components';\nimport pointOnFeature from '@turf/point-on-feature';\nimport bbox from '@turf/bbox';\nimport 'leaflet-textpath';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n @Element() mapElement: HTMLElement;\n mapRef: HTMLElement;\n hostElement: HTMLElement;\n @Prop() maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n @Event() touristicEventCardPress: EventEmitter<number>;\n @Event() outdoorSiteCardPress: EventEmitter<number>;\n @Event() outdoorCourseCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n @Prop() customGeojsonUrl: string;\n @Prop() customGeojsonName: string;\n @Prop() customGeojsonColor: string;\n @Prop() customGeojsonWeight: string;\n @Prop() customWmsUrl: string;\n @Prop() customWmsLayers: string;\n @Prop() customWmsName: string;\n @Prop() customWmsAttribution: string;\n @Prop() customTileUrl: string;\n @Prop() customTileName: string;\n @Prop() customTileAttribution: string;\n @Prop() customLayersRefreshInterval = 0;\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '#4974a5';\n @Prop() colorMarkers = null;\n @Prop() colorClusters = null;\n @Prop() colorOutdoorArea = '#ffb700';\n\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Prop() mainMarkerSize = 32;\n @Prop() selectedMainMarkerSize = 48;\n @Prop() mainClusterSize = 48;\n @Prop() commonMarkerSize = 48;\n @Prop() departureArrivalMarkerSize = 14;\n @Prop() pointReferenceMarkerSize = 24;\n\n @Prop() elevationHeight = 280;\n @Prop() mobileElevationHeight = 280;\n @Prop() largeViewSize = 1024;\n @Prop() elevationDefaultState = 'visible';\n @Prop() isLargeView = false;\n @Prop() fabBackgroundColor = '#eaddff';\n @Prop() fabColor = '#21005d';\n\n @Prop() arrowRepeat = 20;\n\n map: L.Map;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n touristicEventsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n touristicEventsMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesLayer: L.GeoJSON<any>;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n selectedTouristicEventLayer: L.GeoJSON<any>;\n selectedOutdoorSiteLayer: L.GeoJSON<any>;\n selectedOutdoorCourseLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentSignagesLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentTouristicEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n currentOutdoorSiteLayer: L.GeoJSON<any>;\n currentOutdoorCourseLayer: L.GeoJSON<any>;\n currentRelatedOutdoorSitesLayer: L.GeoJSON<any>;\n currentRelatedOutdoorCoursesLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n departureArrivalLayer: L.GeoJSON<any>;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n customLayers: { [name: string]: L.Layer } = {};\n refreshIntervalId: any;\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n touristicEventPopupIsOpen: boolean;\n outdoorSitePopupIsOpen: boolean;\n outdoorCoursePopupIsOpen: boolean;\n\n layerDataIsLoading: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n handleTouristicEventsWithinBoundsBind: (event: any) => void = this.handleTouristicEventsWithinBounds.bind(this);\n handleOutdoorSitesWithinBoundsBind: (event: any) => void = this.handleOutdoorSitesWithinBounds.bind(this);\n\n addTreksController: AbortController = null;\n addTouristicContentsController: AbortController = null;\n addTouristicEventsController: AbortController = null;\n addOutdoorSitesController: AbortController = null;\n addSelectedCurrentTrekController: AbortController = null;\n showTrekLineController: AbortController = null;\n\n viewportState: { [key: string]: boolean } = {};\n hasScrolled = false;\n\n fitBoundsQueued = false;\n\n componentDidUpdate() {\n if (this.map) {\n this.map.invalidateSize();\n if (this.fitBoundsQueued && this.bounds) {\n this.map.fitBounds(this.bounds);\n this.fitBoundsQueued = false;\n }\n }\n }\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.steps = event.detail;\n if (this.hasScrolled && this.currentStepsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.description = event.detail;\n if (this.hasScrolled && this.currentReferencePointsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.parking = event.detail;\n if (this.hasScrolled && this.currentParkingLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationPlacesIsInViewport', { target: 'window' })\n onInformationPlacesIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.informationPlaces = event.detail;\n if (this.hasScrolled && this.currentInformationDesksLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.sensitiveArea = event.detail;\n if (this.hasScrolled && this.currentSensitiveAreasLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.pois = event.detail;\n if (this.hasScrolled && this.currentPoisLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer, !state.currentPois || state.currentPois.length === 0);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicContents = event.detail;\n if (this.hasScrolled && this.currentToutisticContentsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer, !state.trekTouristicContents || state.trekTouristicContents.length === 0);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicEvents = event.detail;\n if (this.hasScrolled && this.currentTouristicEventsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentTouristicEventsLayer, !state.trekTouristicEvents || state.trekTouristicEvents.length === 0);\n }\n }\n\n @Listen('sitesIsInViewport', { target: 'window' })\n sitesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorSitesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorSitesLayer);\n }\n }\n\n @Listen('coursesIsInViewport', { target: 'window' })\n coursesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorCoursesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorCoursesLayer);\n }\n }\n\n @Listen('detailScrolled', { target: 'window' })\n onDetailScrolled() {\n if (!this.hasScrolled) {\n this.hasScrolled = true;\n this.applyCachedViewportState();\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.selectedCurrentStepLayer) {\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n @Listen('cardTouristicEventMouseOver', { target: 'window' })\n onTouristicEventMouseOver(event: CustomEvent<number>) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.addSelectedTouristicEvent(event.detail);\n }\n\n @Listen('cardTouristicEventMouseLeave', { target: 'window' })\n onTouristicEventMouseLeave() {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n\n @Listen('trekDownloadedSuccessConfirm', { target: 'window' })\n onTrekDownloadedSuccessConfirm() {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n }\n\n @Listen('trekDeleteSuccessConfirm', { target: 'window' })\n onTrekDeleteSuccessConfirm() {\n this.map.setMaxZoom(this.maxZoom);\n }\n\n @Listen('cardOutdoorSiteMouseOver', { target: 'window' })\n onOutdoorSiteMouseOver(event: CustomEvent<number>) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.addSelectedOutdoorSite(event.detail);\n }\n\n @Listen('cardOutdoorSiteMouseLeave', { target: 'window' })\n onOutdoorSiteMouseLeave() {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n\n componentWillLoad() {\n if (!state.language) {\n state.language = 'fr';\n }\n if (!state.languages) {\n state.languages = ['fr'];\n }\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, { zoom: 4, center: [47, 2], zoomControl: false });\n\n this.map.on('overlayadd', (event: any) => {\n const layer = event.layer;\n const isCustom = Object.values(this.customLayers).includes(layer);\n if (isCustom) {\n this.refreshSingleLayer(layer);\n }\n });\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: tileLayerOffline(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n crossOrigin: true,\n }),\n });\n });\n\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n }\n\n L.control.zoom({ zoomInTitle: translate[state.language].zoomIn, zoomOutTitle: translate[state.language].zoomOut }).addTo(this.map);\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n contract.title = translate[state.language].contract;\n\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n\n new (L.Control as any).SimpleLocate({\n position: 'topleft',\n className: 'button-locate',\n title: translate[state.language].locate,\n }).addTo(this.map);\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.currentOutdoorSite) {\n this.addOutdoorSite();\n } else if (state.currentOutdoorCourse) {\n this.addOutdoorCourse();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n } else if (state.touristicEvents) {\n this.addTouristicEvents();\n } else if (state.outdoorSites) {\n this.addOutdoorSites();\n }\n\n onChange('currentTreks', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentPois', async () => {\n this.setCurrentPois();\n });\n\n onChange('trekTouristicContents', async () => {\n this.setCurrentTouristicContents();\n });\n\n onChange('trekTouristicEvents', async () => {\n this.setCurrentTouristicEvents();\n });\n\n onChange('currentOutdoorSites', () => {\n if (state.currentOutdoorSites) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.addOutdoorSites(true);\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n this.updateCustomLayersVisibility();\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorSite) {\n this.removeOutdoorCourse();\n this.removeOutdoorSites();\n this.addOutdoorSite();\n } else if (state.currentOutdoorSites) {\n this.removeOutdoorSite();\n this.addOutdoorSites();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorCourse) {\n this.removeOutdoorSite();\n this.addOutdoorCourse();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (this.grwApp) {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (this.grwApp) {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicContents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTreks();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('currentTouristicEvents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicEvent) {\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTouristicEvents) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeOutdoorSites();\n this.removeTouristicEvent();\n this.addTouristicEvents(true);\n }\n });\n\n onChange('mode', () => {\n this.updateCustomLayersVisibility();\n });\n\n this.addCustomLayers();\n\n if (this.customLayersRefreshInterval > 0) {\n this.refreshIntervalId = window.setInterval(() => {\n this.refreshCustomLayers();\n }, this.customLayersRefreshInterval * 60 * 1000);\n }\n }\n\n disconnectedCallback() {\n if (this.refreshIntervalId) {\n window.clearInterval(this.refreshIntervalId);\n }\n }\n\n async addCustomLayers() {\n // 1. Process custom WMS layers\n if (this.customWmsUrl) {\n const wmsUrls = this.customWmsUrl.split(',');\n const wmsLayers = this.customWmsLayers ? this.customWmsLayers.split(',') : [];\n const wmsNames = this.customWmsName ? this.customWmsName.split(',') : [];\n const wmsAttributions = this.customWmsAttribution ? this.customWmsAttribution.split(',') : [];\n\n wmsUrls.forEach((url, index) => {\n const layerName = wmsLayers[index] || '';\n const displayName = wmsNames[index] || `WMS Layer ${index + 1}`;\n const attribution = wmsAttributions[index] || '';\n try {\n const wmsLayer = L.tileLayer.wms(url.trim(), {\n layers: layerName.trim(),\n format: 'image/png',\n transparent: true,\n maxZoom: this.maxZoom,\n version: '1.3.0',\n attribution: attribution.trim(),\n });\n this.customLayers[displayName.trim()] = wmsLayer;\n } catch (e) {\n console.error('Error adding WMS layer:', e);\n }\n });\n }\n // 1.5. Process custom Tile layers (XYZ / WMTS)\n if (this.customTileUrl) {\n const tileUrls = this.customTileUrl.split(',');\n const tileNames = this.customTileName ? this.customTileName.split(',') : [];\n const tileAttributions = this.customTileAttribution ? this.customTileAttribution.split(',') : [];\n\n tileUrls.forEach((url, index) => {\n const displayName = tileNames[index] || `Tile Layer ${index + 1}`;\n const attribution = tileAttributions[index] || '';\n try {\n const tileLayer = L.tileLayer(url.trim(), {\n maxZoom: this.maxZoom,\n attribution: attribution.trim(),\n });\n (tileLayer as any)._originalUrl = url.trim();\n this.customLayers[displayName.trim()] = tileLayer;\n } catch (e) {\n console.error('Error adding custom tile layer:', e);\n }\n });\n }\n\n // 2. Process custom GeoJSON layers\n if (this.customGeojsonUrl) {\n const geojsonUrls = this.customGeojsonUrl.split(',');\n const geojsonNames = this.customGeojsonName ? this.customGeojsonName.split(',') : [];\n const geojsonColors = this.customGeojsonColor ? this.customGeojsonColor.split(',') : [];\n const geojsonWeights = this.customGeojsonWeight ? this.customGeojsonWeight.split(',') : [];\n\n for (let index = 0; index < geojsonUrls.length; index++) {\n const url = geojsonUrls[index].trim();\n const displayName = geojsonNames[index] || `GeoJSON Layer ${index + 1}`;\n const fallbackColor = geojsonColors[index] || '#3388ff';\n const fallbackWeight = geojsonWeights[index] ? parseInt(geojsonWeights[index], 10) : 3;\n\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const geojsonData = await response.json();\n\n const geojsonLayer = L.geoJSON(geojsonData, {\n style: (feature) => {\n const props = feature?.properties || {};\n const color = props.stroke || props.color || fallbackColor;\n const weight = props['stroke-width'] || props.weight || fallbackWeight;\n const opacity = props['stroke-opacity'] || props.opacity || 1.0;\n const fillColor = props.fill || props.fillColor || color;\n const fillOpacity = props['fill-opacity'] || props.fillOpacity || 0.2;\n\n return {\n color,\n weight,\n opacity,\n fillColor,\n fillOpacity,\n };\n },\n pointToLayer: (feature, latlng) => {\n const props = feature?.properties || {};\n const iconProp = props.icon || props['marker-symbol'];\n const nameProp = props.name || props.title || '';\n const descProp = props.description || props.desc || '';\n\n let marker;\n if (iconProp) {\n const isUrl = iconProp.startsWith('http') || iconProp.startsWith('/') || iconProp.startsWith('assets/');\n const size = this.commonMarkerSize;\n if (isUrl) {\n const customIcon = L.icon({\n iconUrl: iconProp,\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customIcon });\n } else {\n const bgColor = props['marker-color'] || props.backgroundColor || 'transparent';\n const borderColor = props['marker-stroke'] || props.borderColor || (bgColor !== 'transparent' ? '#ffffff' : 'transparent');\n const borderWeight = props['marker-stroke-width'] || (bgColor !== 'transparent' ? 2 : 0);\n const borderRadius = props['marker-radius'] || '50%';\n const customDivIcon = L.divIcon({\n html: `<div style=\"font-size: ${size * 0.6}px; display: flex; align-items: center; justify-content: center; width: ${size}px; height: ${size}px; background-color: ${bgColor}; border: ${borderWeight}px solid ${borderColor}; border-radius: ${borderRadius}; box-sizing: border-box;\">${iconProp}</div>`,\n className: '',\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customDivIcon });\n }\n } else {\n const color = props.stroke || props.color || fallbackColor;\n marker = L.circleMarker(latlng, {\n radius: 8,\n fillColor: color,\n color: '#fff',\n weight: 2,\n opacity: 1,\n fillOpacity: 0.8,\n });\n }\n\n if (nameProp || descProp) {\n let popupContent = `<div class=\"trek-departure-popup\" style=\"font-family: var(--font-family, sans-serif);\">`;\n if (props.image) {\n const imgUrl = props.image;\n popupContent += `<img src=\"${imgUrl}\" style=\"width: 100%; height: auto; border-top-left-radius: var(--border-radius, 8px); border-top-right-radius: var(--border-radius, 8px); max-height: 120px; object-fit: cover;\" />`;\n }\n if (nameProp) {\n popupContent += `<div class=\"trek-name\" style=\"padding: 12px 12px 4px 12px; margin: 0; color: var(--color-primary-app);\">${nameProp}</div>`;\n }\n if (descProp) {\n popupContent += `<div style=\"font-size: 12px; color: var(--color-on-surface-variant, #49454e); padding: ${nameProp ? '0px 12px 12px 12px' : '12px'}; line-height: 1.4; word-break: break-word;\">${descProp}</div>`;\n }\n popupContent += `</div>`;\n marker.bindPopup(popupContent, { closeButton: false });\n }\n return marker;\n }\n });\n\n (geojsonLayer as any)._customUrl = url;\n this.customLayers[displayName.trim()] = geojsonLayer;\n } catch (e) {\n console.error(`Error loading GeoJSON from ${url}:`, e);\n }\n }\n }\n\n this.updateCustomLayersVisibility();\n }\n\n refreshCustomLayers() {\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (this.map.hasLayer(layer)) {\n this.refreshSingleLayer(layer);\n }\n });\n }\n\n async refreshSingleLayer(layer: L.Layer) {\n if (layer instanceof L.TileLayer.WMS) {\n layer.setParams({ _t: Date.now() } as any);\n } else if (layer instanceof L.TileLayer) {\n const originalUrl = (layer as any)._originalUrl;\n if (originalUrl) {\n const separator = originalUrl.includes('?') ? '&' : '?';\n layer.setUrl(`${originalUrl}${separator}_t=${Date.now()}`);\n } else {\n layer.redraw();\n }\n } else if (layer instanceof L.GeoJSON) {\n const url = (layer as any)._customUrl;\n if (url) {\n try {\n const response = await fetch(url, { cache: 'no-store' });\n if (response.ok) {\n const newData = await response.json();\n layer.clearLayers();\n layer.addData(newData);\n }\n } catch (e) {\n console.error(`Error refreshing GeoJSON layer:`, e);\n }\n }\n }\n }\n\n updateCustomLayersVisibility() {\n const shouldShow = !this.grwApp || (state.mode === 'treks' && !!state.currentTrek);\n\n if (shouldShow && Object.keys(this.customLayers).length > 0 && !this.layersControl) {\n const baseLayers = {};\n this.tileLayer.forEach(tl => {\n baseLayers[tl.key] = tl.value;\n });\n this.layersControl = L.control.layers(baseLayers, {}, { collapsed: true }).addTo(this.map);\n }\n\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (shouldShow) {\n if (!this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n }\n if (this.layersControl) {\n const hasLayer = (this.layersControl as any)._layers.some(l => l.layer === layer);\n if (!hasLayer) {\n this.layersControl.addOverlay(layer, name);\n }\n }\n } else {\n if (this.map.hasLayer(layer)) {\n this.map.removeLayer(layer);\n }\n if (this.layersControl) {\n this.layersControl.removeLayer(layer);\n }\n }\n });\n\n if (shouldShow && Object.keys(this.customLayers).length > 0) {\n this.handleLayersControlEvent();\n }\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON, loading = false) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n this.layerDataIsLoading = loading;\n forceUpdate(this.hostElement);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n async addTreks(resetBounds = false) {\n this.addTreksController?.abort();\n this.addTreksController = new AbortController();\n const { signal } = this.addTreksController;\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if ((treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer addTreks() call or removeTreks() was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker-icon\" src=${treksIcons[geoJsonPoint.properties.practice]} /></div>`\n : `<div part=\"trek-marker-container\" class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image-popup';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"treks-marker-cluster-group-icon\" class=\"treks-marker-cluster-group-icon\">' + cluster.getChildCount() + '</div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n this.bounds && this.bounds._northEast && this.bounds._southWest && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n this.addTreksController?.abort();\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n handleTouristicEventsWithinBounds() {\n if (\n (state.currentTouristicEvents && !state.currentMapBounds) ||\n (state.currentTouristicEvents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents.filter(touristicEvent =>\n this.map.getBounds().contains(L.latLng(touristicEvent.geometry.coordinates[1], touristicEvent.geometry.coordinates[0])),\n );\n }\n }\n\n handleOutdoorSitesWithinBounds() {\n if (\n (state.currentOutdoorSites && !state.currentMapBounds) ||\n (state.currentOutdoorSites && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites.filter(outdoorSite => {\n const coordinates = pointOnFeature(outdoorSite.geometry as any).geometry.coordinates;\n return this.map.getBounds().contains(L.latLng(coordinates[1], coordinates[0]));\n });\n }\n }\n\n async addTrek() {\n const trekInStore: Trek = await getDataInStore('treks', state.currentTrek.id);\n if (trekInStore) {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n } else {\n this.map.setMaxZoom(this.maxZoom);\n }\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n onEachFeature: (_feature, layer) => {\n (layer as any).setText('>', {\n repeat: this.arrowRepeat,\n center: true,\n attributes: { 'fill': '#000000', 'font-weight': 'bold', 'font-size': '16px' },\n });\n },\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const parkingImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/parking.svg`);\n const currentParking: Feature = {\n type: 'Feature',\n properties: { name: state.currentTrek.advised_parking },\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<img part=\"parking-marker\" src=${parkingImageSrc} />`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const parkingTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n parkingTooltip.part = 'parking-tooltip';\n parkingTooltip.className = 'parking-tooltip';\n const parkingName = L.DomUtil.create('div');\n parkingName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n parkingTooltip.part = 'parking-name';\n parkingName.className = 'parking-name';\n parkingTooltip.appendChild(parkingName);\n layer.bindTooltip(parkingTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n sensitiveAreaTooltip.part = 'sensitive-area-tooltip';\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n sensitiveAreaName.part = 'sensitive-area-name';\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n await this.addCurrentInformationDesks(state.currentTrek);\n\n await this.addCurrentPois();\n\n await this.addCurrentSignages();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"point-reference-icon\" class=\"point-reference-icon\">${index}</div>`,\n className: '',\n iconSize: this.pointReferenceMarkerSize,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"step-marker\" class=\"step-marker\"><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${stepIndex}</div></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n let elevationTranslation = {\n 'y: ': '',\n 'x: ': '',\n 'Total Length: ': 'Longueur totale : ',\n 'Min Elevation: ': 'Altitude min : ',\n 'Max Elevation: ': 'Altitude max : ',\n };\n\n /* @ts-ignore */\n L.registerLocale('fr', elevationTranslation);\n /* @ts-ignore */\n L.setLocale('fr');\n\n const elevations = state.currentTrek.geometry.coordinates.map(coord => coord[2]).filter(el => el !== undefined && el !== null);\n const minMaxElevation = {\n yAxisMin: elevations.length > 0 ? Math.min(...elevations) * 0.75 : 0,\n yAxisMax: elevations.length > 0 ? Math.max(...elevations) * 1.25 : 0,\n };\n\n const elevationOptions = {\n elevationDiv: `#elevation-container`,\n theme: `custom-theme use-theme-color`,\n height: this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight,\n distanceMarkers: { distance: false, direction: false },\n summary: 'inline',\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n waypoints: false,\n almostOver: false,\n dragging: false,\n ...minMaxElevation,\n };\n this.elevationControl = (L.control as any).elevation(elevationOptions).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n (this.elevationControl as any).eleDiv.style.display = this.elevationDefaultState === 'visible' ? 'block' : 'none';\n forceUpdate(this.hostElement);\n\n const departureArrival: FeatureCollection = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[0] },\n properties: null,\n },\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[state.currentTrek.geometry.coordinates.length - 1] },\n properties: null,\n },\n ],\n };\n\n let index = 0;\n this.departureArrivalLayer = L.geoJSON(departureArrival, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\" class=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\"></div>`,\n className: '',\n iconSize: this.departureArrivalMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n });\n this.map.addLayer(this.departureArrivalLayer);\n\n this.handleLayersControl();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.map.on('eledata_loaded', () => {\n this.fitBoundsQueued = true;\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n });\n }\n\n async getIcons(featuresCollection, property) {\n const icons = {};\n for (let index = 0; index < featuresCollection.features.length; index++) {\n if (featuresCollection.features[index].properties[property]) {\n icons[featuresCollection.features[index].properties[property]] = await this.getIcon(featuresCollection.features[index].properties[property]);\n }\n }\n return icons;\n }\n\n async getIcon(pictogram) {\n let icon;\n if (!Capacitor.isNativePlatform()) {\n const dataInStore = await checkFileInStore(pictogram);\n icon = dataInStore ? window.URL.createObjectURL((await getFileInStore(pictogram)).data) : pictogram ? pictogram : null;\n } else {\n const image = await Filesystem.getUri({\n path: pictogram,\n directory: Directory.Data,\n });\n if (image) {\n icon = Capacitor.convertFileSrc(image.uri);\n }\n }\n\n return icon;\n }\n\n async addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n this.addSelectedCurrentTrekController?.abort();\n this.addSelectedCurrentTrekController = new AbortController();\n const { signal } = this.addSelectedCurrentTrekController;\n state.selectedTrekId = id;\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer hover or removal occurred during the await\n if (signal.aborted) {\n return;\n }\n\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker\" class=\"trek-marker\" src=${\n treksIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n this.addSelectedCurrentTrekController?.abort();\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.filter(attachment => attachment.type === 'image').length > 0\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail !== ''\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail\n : state.currentTrekSteps[stepIndex].attachments[0].url\n : null,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"selected-step-marker\" class=\"selected-step-marker\" ><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${geoJsonPoint.properties.index}</div></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-name';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n if (state.selectedStepId) {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n }\n\n handleLayersControlEvent() {\n if (this.layersControl) {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n const overlay = (this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId);\n if (this.userLayersState[userLayerState.layerId] && overlay.layer._layers && Object.keys(overlay.layer._layers).length === 0) {\n this.layerDataIsLoading = true;\n forceUpdate(this.hostElement);\n }\n };\n }\n });\n }\n }\n\n removeTrek() {\n this.handleLayersOnRemove();\n }\n\n async showTrekLine(id) {\n this.removeSelectedCurrentTrek();\n this.showTrekLineController?.abort();\n this.showTrekLineController = new AbortController();\n const { signal } = this.showTrekLineController;\n const trekLine = await getTrekGeometry(id);\n\n // Abort if a newer hover or hideTrekLine occurred during the await\n if (signal.aborted) {\n return;\n }\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: trekLine.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n }\n\n hideTrekLine() {\n this.showTrekLineController?.abort();\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n async addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n async addTouristicContents(resetBounds = false) {\n this.addTouristicContentsController?.abort();\n this.addTouristicContentsController = new AbortController();\n const { signal } = this.addTouristicContentsController;\n state.touristicContentsWithinBounds = state.currentTouristicContents;\n\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContents) {\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n imgSrc:\n currentTouristicContent.attachments && currentTouristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicContent.attachments[0].thumbnail !== ''\n ? currentTouristicContent.attachments[0].thumbnail\n : currentTouristicContent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if ((touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-coordinates-popup';\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicContentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-content-marker-cluster-group-icon\" class=\"touristic-content-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n this.addTouristicContentsController?.abort();\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n async addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n const touristicEventType = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type);\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: touristicEventType ? touristicEventType.pictogram : null,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n const toutisticEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n toutisticEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n async addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc:\n touristicContent.attachments && touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicContent.attachments[0].thumbnail !== ''\n ? touristicContent.attachments[0].thumbnail\n : touristicContent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n const toutisticContentIcons = await this.getIcons(touristicContentFeatureCollection, 'category');\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentDeparturePopup.part = 'touristic-content-coordinates-popup';\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n async addTouristicEvents(resetBounds = false) {\n this.addTouristicEventsController?.abort();\n this.addTouristicEventsController = new AbortController();\n const { signal } = this.addTouristicEventsController;\n state.touristicEventsWithinBounds = state.currentTouristicEvents;\n\n const touristicEventsCurrentCoordinates = [];\n\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvents) {\n for (const currentTouristicEvent of state.currentTouristicEvents) {\n touristicEventsCurrentCoordinates.push(currentTouristicEvent.geometry.coordinates);\n\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicEvent.geometry.coordinates },\n properties: {\n id: currentTouristicEvent.id,\n name: currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === currentTouristicEvent.type)?.pictogram,\n imgSrc:\n currentTouristicEvent.attachments && currentTouristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicEvent.attachments[0].thumbnail !== ''\n ? currentTouristicEvent.attachments[0].thumbnail\n : currentTouristicEvent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.touristicEventsLayer) {\n if ((touristicEventsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const touristicEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.touristicEventsLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventCoordinatesPopup.part = 'touristic-event-coordinates-popup';\n touristicEventCoordinatesPopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventCoordinatesPopup.appendChild(touristicEventImg);\n }\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventCoordinatesPopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventCoordinatesPopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicEvent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicEventsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-event-marker-cluster-group-icon\" class=\"touristic-event-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n this.map.addLayer(this.touristicEventsMarkerClusterGroup);\n } else {\n if (touristicEventsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.touristicEventsLayer.clearLayers();\n this.touristicEventsLayer.addData(touristicEventsFeatureCollection);\n this.touristicEventsMarkerClusterGroup.clearLayers();\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n\n removeTouristicEvents() {\n this.addTouristicEventsController?.abort();\n if (this.touristicEventsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicEventsMarkerClusterGroup);\n this.touristicEventsLayer = null;\n this.touristicEventsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n }\n\n async addOutdoorSites(resetBounds = false) {\n this.addOutdoorSitesController?.abort();\n this.addOutdoorSitesController = new AbortController();\n const { signal } = this.addOutdoorSitesController;\n state.outdoorSitesWithinBounds = state.currentOutdoorSites;\n\n const outdoorSitesCurrentCoordinates = [];\n\n const outdoorSitesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n for (const currentOutdoorSite of state.currentOutdoorSites) {\n outdoorSitesFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(currentOutdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: currentOutdoorSite.id,\n name: currentOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentOutdoorSite.attachments && currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentOutdoorSite.attachments[0].thumbnail !== ''\n ? currentOutdoorSite.attachments[0].thumbnail\n : currentOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.outdoorSitesLayer) {\n if ((outdoorSitesCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n const outdoorSitesBbox = bbox(outdoorSitesFeatureCollection);\n this.bounds = L.latLngBounds([outdoorSitesBbox[1], outdoorSitesBbox[0]], [outdoorSitesBbox[3], outdoorSitesBbox[2]]);\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const outdoorSitesIcons = await this.getIcons(outdoorSitesFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.outdoorSitesLayer = L.geoJSON(outdoorSitesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteCoordinatesPopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteCoordinatesPopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteImg);\n }\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedOutdoorSite(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.outdoorSitesMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"outdoor-site-marker-cluster-group-icon\" class=\"outdoor-site-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n this.map.addLayer(this.outdoorSitesMarkerClusterGroup);\n } else {\n if (outdoorSitesCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(outdoorSitesCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.outdoorSitesLayer.clearLayers();\n this.outdoorSitesLayer.addData(outdoorSitesFeatureCollection);\n this.outdoorSitesMarkerClusterGroup.clearLayers();\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n\n removeOutdoorSites() {\n this.addOutdoorSitesController?.abort();\n if (this.outdoorSitesLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.outdoorSitesMarkerClusterGroup);\n this.outdoorSitesLayer = null;\n this.outdoorSitesMarkerClusterGroup = null;\n this.map.off('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n }\n\n async addOutdoorSite() {\n const OutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSite) {\n const outdoorSitePractice = state.outdoorPractices.find(outdoorPractice => outdoorPractice.id === state.currentOutdoorSite.practice);\n OutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorSite.geometry,\n properties: {\n id: state.currentOutdoorSite.id,\n name: state.currentOutdoorSite.name,\n practice: outdoorSitePractice ? outdoorSitePractice.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorSiteLayer) {\n const outdoorSitesIcons = await this.getIcons(OutdoorSiteFeatureCollection, 'practice');\n\n this.currentOutdoorSiteLayer = L.geoJSON(OutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorSiteLayer);\n }\n\n await this.addCurrentInformationDesks(state.currentOutdoorSite);\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n await this.addCurrentRelatedOutdoorSites();\n\n await this.addCurrentRelatedOutdoorCourses();\n\n this.handleLayersControl();\n\n this.map.invalidateSize();\n this.map.fitBounds(this.currentOutdoorSiteLayer.getBounds(), { maxZoom: this.maxZoom });\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n async addCurrentRelatedOutdoorSites() {\n const currentRelatedOutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorSites) {\n for (const currentRelatedOutdoorSite of state.currentRelatedOutdoorSites) {\n currentRelatedOutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorSite.geometry,\n properties: {\n id: currentRelatedOutdoorSite.id,\n name: currentRelatedOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentRelatedOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentRelatedOutdoorSite.attachments && currentRelatedOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorSite.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorSite.attachments[0].thumbnail\n : currentRelatedOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorSitesLayer && currentRelatedOutdoorSiteFeatureCollection.features.length > 0) {\n const outdoorSitesIcons = await this.getIcons(currentRelatedOutdoorSiteFeatureCollection, 'practice');\n\n this.currentRelatedOutdoorSitesLayer = L.geoJSON(currentRelatedOutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n async addCurrentRelatedOutdoorCourses() {\n const currentRelatedOutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorCourses) {\n for (const currentRelatedOutdoorCourse of state.currentRelatedOutdoorCourses) {\n currentRelatedOutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorCourse.geometry,\n properties: {\n id: currentRelatedOutdoorCourse.id,\n name: currentRelatedOutdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === currentRelatedOutdoorCourse.type)?.pictogram,\n imgSrc:\n currentRelatedOutdoorCourse.attachments && currentRelatedOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail\n : currentRelatedOutdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorCoursesLayer && currentRelatedOutdoorCourseFeatureCollection.features.length > 0) {\n const outdoorCoursesIcons = await this.getIcons(currentRelatedOutdoorCourseFeatureCollection, 'type');\n\n this.currentRelatedOutdoorCoursesLayer = L.geoJSON(currentRelatedOutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"><img part=\"outdoor-courses-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n removeOutdoorSite() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedTouristicEvent(id, customCoordinates?) {\n const touristicEventFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicEvents) {\n const touristicEvent = state.touristicEvents.find(touristicEvent => touristicEvent.id === id);\n\n touristicEventFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicEvent.geometry.coordinates },\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n category: state.touristicEventTypes.find(type => type.id === touristicEvent.type)?.pictogram,\n imgSrc:\n touristicEvent.attachments && touristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicEvent.attachments[0].thumbnail !== ''\n ? touristicEvent.attachments[0].thumbnail\n : touristicEvent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicEvent();\n state.selectedTouristicEventId = id;\n\n const touristicEventsIcons = await this.getIcons(touristicEventFeatureCollection, 'category');\n this.selectedTouristicEventLayer = L.geoJSON(touristicEventFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventDeparturePopup.part = 'touristic-event-coordinates-popup';\n touristicEventDeparturePopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventDeparturePopup.appendChild(touristicEventImg);\n }\n\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventDeparturePopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventDeparturePopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicEventPopupIsOpen) {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicEventPopupIsOpen = Boolean(state.selectedTouristicEventId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicEventId) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicEvent() {\n state.selectedTouristicEventId = null;\n this.selectedTouristicEventLayer && this.map.removeLayer(this.selectedTouristicEventLayer);\n this.selectedTouristicEventLayer = null;\n }\n\n async addOutdoorCourse() {\n const OutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourseType = state.outdoorCourseTypes.find(outdoorCourseType => outdoorCourseType.id === state.currentOutdoorCourse.type);\n OutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorCourse.geometry,\n properties: {\n id: state.currentOutdoorCourse.id,\n name: state.currentOutdoorCourse.name,\n type: outdoorCourseType ? outdoorCourseType.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorCourseLayer) {\n const outdoorCoursesIcons = await this.getIcons(OutdoorCourseFeatureCollection, 'type');\n this.currentOutdoorCourseLayer = L.geoJSON(OutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorCourseLayer);\n }\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n this.handleLayersControl();\n\n this.map.fitBounds(this.currentOutdoorCourseLayer.getBounds());\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeOutdoorCourse() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedOutdoorSite(id, _customCoordinates?) {\n const outdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n const outdoorSite = state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === id);\n if (outdoorSite && outdoorSite.geometry) {\n outdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorSite.id,\n name: outdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === outdoorSite.practice)?.pictogram,\n imgSrc:\n outdoorSite.attachments && outdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorSite.attachments[0].thumbnail !== ''\n ? outdoorSite.attachments[0].thumbnail\n : outdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n this.removeSelectedOutdoorSite();\n state.selectedOutdoorSiteId = id;\n\n const outdoorSitesIcons = await this.getIcons(outdoorSiteFeatureCollection, 'practice');\n this.selectedOutdoorSiteLayer = L.geoJSON(outdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteDeparturePopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteDeparturePopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteDeparturePopup.appendChild(outdoorSiteImg);\n }\n\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteDeparturePopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteDeparturePopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorSitePopupIsOpen) {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorSitePopupIsOpen = Boolean(state.selectedOutdoorSiteId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorSiteId) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n },\n style: { color: this.colorOutdoorArea, interactive: false },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorSite() {\n state.selectedOutdoorSiteId = null;\n this.selectedOutdoorSiteLayer && this.map.removeLayer(this.selectedOutdoorSiteLayer);\n this.selectedOutdoorSiteLayer = null;\n }\n\n async addSelectedOutdoorCourse(id, _customCoordinates?) {\n const outdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourse = state.currentOutdoorCourse;\n outdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorCourse.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorCourse.id,\n name: outdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === outdoorCourse.type)?.pictogram,\n imgSrc:\n outdoorCourse.attachments && outdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorCourse.attachments[0].thumbnail !== ''\n ? outdoorCourse.attachments[0].thumbnail\n : outdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedOutdoorCourse();\n state.selectedOutdoorCourseId = id;\n\n const outdoorCoursesIcons = await this.getIcons(outdoorCourseFeatureCollection, 'type');\n this.selectedOutdoorCourseLayer = L.geoJSON(outdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.type]\n ? `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorCourseDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorCourseDeparturePopup.part = 'outdoor-course-coordinates-popup';\n outdoorCourseDeparturePopup.className = 'outdoor-course-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorCourseImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorCourseImg.part = 'outdoor-course-coordinates-image';\n outdoorCourseImg.src = geoJsonPoint.properties.imgSrc;\n outdoorCourseDeparturePopup.appendChild(outdoorCourseImg);\n }\n\n const outdoorCourseName = L.DomUtil.create('div');\n outdoorCourseName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorCourseName.part = 'outdoor-course-name';\n outdoorCourseName.className = 'outdoor-course-name';\n outdoorCourseDeparturePopup.appendChild(outdoorCourseName);\n\n const outdoorCourseButton = L.DomUtil.create('button');\n outdoorCourseButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorCourseButton.part = 'outdoor-course-button';\n outdoorCourseButton.className = 'outdoor-course-button';\n outdoorCourseButton.onclick = () => this.outdoorCourseCardPress.emit(geoJsonPoint.properties.id);\n outdoorCourseDeparturePopup.appendChild(outdoorCourseButton);\n\n layer.bindPopup(outdoorCourseDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorCoursePopupIsOpen) {\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorCoursePopupIsOpen = Boolean(state.selectedOutdoorCourseId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorCourseId) {\n this.outdoorCoursePopupIsOpen = false;\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorCourse() {\n state.selectedOutdoorCourseId = null;\n this.selectedOutdoorCourseLayer && this.map.removeLayer(this.selectedOutdoorCourseLayer);\n this.selectedOutdoorCourseLayer = null;\n }\n\n async addCurrentPois() {\n if (state.poisData > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram\n ? `<div part=\"poi-marker\" class=\"poi-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"poi-marker\" class=\"poi-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n poiTooltip.part = 'poi-tooltip';\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n poiName.part = 'poi-name';\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n if (state.currentPois) {\n this.setCurrentPois();\n }\n }\n }\n\n setCurrentPois() {\n if (this.currentPoisLayer) {\n if (state.currentPois) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n this.currentPoisLayer.clearLayers();\n\n this.currentPoisLayer.addData(currentPoisFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentSignages() {\n if (state.currentSignages && state.currentSignages.length > 0) {\n const signageImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/signage.svg`);\n const currentSignagesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentSignage of state.currentSignages) {\n currentSignagesFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentSignage.name },\n geometry: currentSignage.geometry,\n });\n }\n\n this.currentSignagesLayer = L.geoJSON(currentSignagesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"signage-marker\" class=\"signage-marker\"><img part=\"signage-img\" src=${signageImageSrc} /><div part=\"signage-name\" class=\"signage-name\">${geoJsonPoint.properties.name}</div></div>`,\n className: '',\n iconSize: [this.commonMarkerSize * 1.2, this.commonMarkerSize * 0.8],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const signageTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n signageTooltip.part = 'signage-tooltip';\n signageTooltip.className = 'signage-tooltip';\n const signageName = L.DomUtil.create('div');\n signageName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n signageName.part = 'signage-name';\n signageName.className = 'signage-name';\n signageTooltip.appendChild(signageName);\n layer.bindTooltip(signageTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicContents() {\n if (state.touristicContentsData > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.category_pictogram\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img src=${geoJsonPoint.properties.category_pictogram} /></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.on('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentTooltip.part = 'touristic-content-tooltip';\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n\n if (state.trekTouristicContents) {\n this.setCurrentTouristicContents();\n }\n }\n }\n\n setCurrentTouristicContents() {\n if (this.currentToutisticContentsLayer) {\n if (state.trekTouristicContents) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n this.currentToutisticContentsLayer.clearLayers();\n\n this.currentToutisticContentsLayer.addData(currentTouristicContentsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentTouristicEvents() {\n if (state.touristicEventsData > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentTouristicEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventTooltip.part = 'touristic-event-tooltip';\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n\n if (state.trekTouristicEvents) {\n this.setCurrentTouristicEvents();\n }\n }\n }\n\n setCurrentTouristicEvents() {\n if (this.currentTouristicEventsLayer) {\n if (state.trekTouristicEvents) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.trekTouristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n this.currentTouristicEventsLayer.clearLayers();\n\n this.currentTouristicEventsLayer.addData(currentTouristicEventsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentInformationDesks(currentData) {\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks => currentData.information_desks.includes(currentInformationDesks.id))) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n if (currentInformationDesksFeatureCollection.features.length > 0) {\n const informationDesksIcons = await this.getIcons(currentInformationDesksFeatureCollection, 'type_pictogram');\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: informationDesksIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img src=${informationDesksIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksTooltip.part = 'information-desks-tooltip';\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksName.part = 'information-desks-name';\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n }\n }\n\n handleLayersControl() {\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (state.poisData > 0) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentSignagesLayer) {\n overlays[translate[state.language].layers.signages] = this.currentSignagesLayer;\n this.currentSignagesLayer.addTo(this.map);\n }\n if (state.touristicContentsData > 0) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n if (state.touristicEventsData > 0) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentTouristicEventsLayer;\n }\n\n if (this.currentRelatedOutdoorSitesLayer) {\n overlays[translate[state.language].layers.sites] = this.currentRelatedOutdoorSitesLayer;\n }\n\n if (this.currentRelatedOutdoorCoursesLayer) {\n overlays[translate[state.language].layers.courses] = this.currentRelatedOutdoorCoursesLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else if (Object.keys(overlays).length > 0) {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n }\n\n applyCachedViewportState() {\n if (!this.layersControl) return;\n\n const layerMap: { key: string; layer: L.GeoJSON; loading?: boolean }[] = [\n { key: 'steps', layer: this.currentStepsLayer },\n { key: 'description', layer: this.currentReferencePointsLayer },\n { key: 'parking', layer: this.currentParkingLayer },\n { key: 'sensitiveArea', layer: this.currentSensitiveAreasLayer },\n { key: 'informationPlaces', layer: this.currentInformationDesksLayer },\n { key: 'pois', layer: this.currentPoisLayer, loading: !state.currentPois || state.currentPois.length === 0 },\n { key: 'touristicContents', layer: this.currentToutisticContentsLayer, loading: !state.trekTouristicContents || state.trekTouristicContents.length === 0 },\n { key: 'touristicEvents', layer: this.currentTouristicEventsLayer, loading: !state.trekTouristicEvents || state.trekTouristicEvents.length === 0 },\n ];\n\n for (const { key, layer, loading } of layerMap) {\n if (layer && this.viewportState[key] !== undefined) {\n this.handleLayerVisibility(this.viewportState[key], layer, loading || false);\n }\n }\n }\n\n handleLayersOnRemove() {\n this.viewportState = {};\n this.hasScrolled = false;\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.departureArrivalLayer) {\n this.map.removeLayer(this.departureArrivalLayer);\n this.departureArrivalLayer = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentSignagesLayer) {\n this.map.removeLayer(this.currentSignagesLayer);\n this.currentSignagesLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentTouristicEventsLayer) {\n this.map.removeLayer(this.currentTouristicEventsLayer);\n this.currentTouristicEventsLayer = null;\n }\n if (this.currentOutdoorSiteLayer) {\n this.map.removeLayer(this.currentOutdoorSiteLayer);\n this.currentOutdoorSiteLayer = null;\n }\n if (this.currentOutdoorCourseLayer) {\n this.map.removeLayer(this.currentOutdoorCourseLayer);\n this.currentOutdoorCourseLayer = null;\n }\n if (this.currentRelatedOutdoorSitesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorSitesLayer);\n this.currentRelatedOutdoorSitesLayer = null;\n }\n if (this.currentRelatedOutdoorCoursesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorCoursesLayer);\n this.currentRelatedOutdoorCoursesLayer = null;\n }\n }\n\n @Listen('resize', { target: 'window' })\n onWindowResize() {\n this.handleView();\n }\n\n handleView() {\n const elevationHeight = this.mapElement.getBoundingClientRect().width >= this.largeViewSize ? this.elevationHeight : this.mobileElevationHeight;\n if (this.elevationControl) {\n (this.elevationControl.options as any).height = elevationHeight;\n (this.elevationControl as any).redraw();\n }\n if (this.map) {\n this.map.invalidateSize();\n }\n forceUpdate(this.hostElement);\n }\n\n handleElevation() {\n (this.elevationControl as any).eleDiv.style.display = (this.elevationControl as any).eleDiv.style.display === 'block' ? 'none' : 'block';\n (this.elevationControl as any).redraw();\n forceUpdate(this.hostElement);\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n\n return (\n <Host\n ref={el => (this.hostElement = el)}\n style={{\n '--font-family': this.fontFamily,\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-markers': this.colorMarkers ? this.colorMarkers : this.colorPrimaryApp,\n '--color-clusters': this.colorClusters ? this.colorClusters : this.colorPrimaryApp,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--elevation-height': (this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight)\n .toString()\n .concat('px'),\n }}\n >\n <div\n id=\"map\"\n part=\"map\"\n class={\n (state.currentTouristicContent || state.currentTouristicEvent || state.currentOutdoorSite || state.currentOutdoorCourse) && this.grwApp\n ? 'common-map'\n : state.currentTrek && this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block'\n ? 'trek-map-and-elevation'\n : state.currentTrek\n ? 'trek-map'\n : 'treks-map'\n }\n ref={el => (this.mapRef = el)}\n >\n {this.layerDataIsLoading && (\n <div class=\"layer-loader-container\">\n <div class=\"layer-loader\"></div>\n </div>\n )}\n {state.currentTrek && (\n <div class=\"grw-elevation-visibility-button-container\">\n <grw-fab\n exportparts=\"fab-visibility-button,fab-visibility-button-icon,fab-visibility-button-label\"\n font-family={this.fontFamily}\n action={() => this.handleElevation()}\n icon={() => (this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block' ? 'show-elevation' : 'hide-elevation')}\n showTitle={translate[state.language].showElevation}\n hideTitle={translate[state.language].hideElevation}\n fab-background-color={this.fabBackgroundColor}\n fab-color={this.fabColor}\n ></grw-fab>\n </div>\n )}\n </div>\n\n {!this.mapIsReady && (\n <div part=\"map-loader-container\" class=\"map-loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen, Element, forceUpdate } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-i18n';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport '../../utils/leaflet-simple-locate.min.js';\nimport state, { onChange } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport { getDataInStore } from 'services/grw-db.service';\nimport { checkFileInStore, getFileInStore } from 'utils/utils';\nimport { Capacitor } from '@capacitor/core';\nimport { Directory, Filesystem } from '@capacitor/filesystem';\nimport { Trek } from 'components';\nimport pointOnFeature from '@turf/point-on-feature';\nimport bbox from '@turf/bbox';\nimport 'leaflet-textpath';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n @Element() mapElement: HTMLElement;\n mapRef: HTMLElement;\n hostElement: HTMLElement;\n @Prop() maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n @Event() touristicEventCardPress: EventEmitter<number>;\n @Event() outdoorSiteCardPress: EventEmitter<number>;\n @Event() outdoorCourseCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n @Prop() customGeojsonUrl: string;\n @Prop() customGeojsonName: string;\n @Prop() customGeojsonColor: string;\n @Prop() customGeojsonWeight: string;\n @Prop() customWmsUrl: string;\n @Prop() customWmsLayers: string;\n @Prop() customWmsName: string;\n @Prop() customWmsAttribution: string;\n @Prop() customTileUrl: string;\n @Prop() customTileName: string;\n @Prop() customTileAttribution: string;\n @Prop() customLayersRefreshInterval = 0;\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '#4974a5';\n @Prop() colorMarkers = null;\n @Prop() colorClusters = null;\n @Prop() colorOutdoorArea = '#ffb700';\n\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Prop() mainMarkerSize = 32;\n @Prop() selectedMainMarkerSize = 48;\n @Prop() mainClusterSize = 48;\n @Prop() commonMarkerSize = 48;\n @Prop() departureArrivalMarkerSize = 14;\n @Prop() pointReferenceMarkerSize = 24;\n\n @Prop() elevationHeight = 280;\n @Prop() mobileElevationHeight = 280;\n @Prop() largeViewSize = 1024;\n @Prop() elevationDefaultState = 'visible';\n @Prop() isLargeView = false;\n @Prop() fabBackgroundColor = '#eaddff';\n @Prop() fabColor = '#21005d';\n\n @Prop() arrowRepeat = 20;\n\n map: L.Map;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n touristicEventsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n touristicEventsMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesLayer: L.GeoJSON<any>;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n selectedTouristicEventLayer: L.GeoJSON<any>;\n selectedOutdoorSiteLayer: L.GeoJSON<any>;\n selectedOutdoorCourseLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentSignagesLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentTouristicEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n currentOutdoorSiteLayer: L.GeoJSON<any>;\n currentOutdoorCourseLayer: L.GeoJSON<any>;\n currentRelatedOutdoorSitesLayer: L.GeoJSON<any>;\n currentRelatedOutdoorCoursesLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n departureArrivalLayer: L.GeoJSON<any>;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n customLayers: { [name: string]: L.Layer } = {};\n refreshIntervalId: any;\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n touristicEventPopupIsOpen: boolean;\n outdoorSitePopupIsOpen: boolean;\n outdoorCoursePopupIsOpen: boolean;\n\n layerDataIsLoading: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n handleTouristicEventsWithinBoundsBind: (event: any) => void = this.handleTouristicEventsWithinBounds.bind(this);\n handleOutdoorSitesWithinBoundsBind: (event: any) => void = this.handleOutdoorSitesWithinBounds.bind(this);\n\n addTreksController: AbortController = null;\n addTouristicContentsController: AbortController = null;\n addTouristicEventsController: AbortController = null;\n addOutdoorSitesController: AbortController = null;\n addSelectedCurrentTrekController: AbortController = null;\n showTrekLineController: AbortController = null;\n\n viewportState: { [key: string]: boolean } = {};\n hasScrolled = false;\n\n fitBoundsQueued = false;\n\n componentDidUpdate() {\n if (this.map) {\n this.map.invalidateSize();\n if (this.fitBoundsQueued && this.bounds) {\n this.map.fitBounds(this.bounds);\n this.fitBoundsQueued = false;\n }\n }\n }\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.steps = event.detail;\n if (this.hasScrolled && this.currentStepsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.description = event.detail;\n if (this.hasScrolled && this.currentReferencePointsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.parking = event.detail;\n if (this.hasScrolled && this.currentParkingLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationPlacesIsInViewport', { target: 'window' })\n onInformationPlacesIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.informationPlaces = event.detail;\n if (this.hasScrolled && this.currentInformationDesksLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.sensitiveArea = event.detail;\n if (this.hasScrolled && this.currentSensitiveAreasLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.pois = event.detail;\n if (this.hasScrolled && this.currentPoisLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer, !state.currentPois || state.currentPois.length === 0);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicContents = event.detail;\n if (this.hasScrolled && this.currentToutisticContentsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer, !state.trekTouristicContents || state.trekTouristicContents.length === 0);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicEvents = event.detail;\n if (this.hasScrolled && this.currentTouristicEventsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentTouristicEventsLayer, !state.trekTouristicEvents || state.trekTouristicEvents.length === 0);\n }\n }\n\n @Listen('sitesIsInViewport', { target: 'window' })\n sitesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorSitesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorSitesLayer);\n }\n }\n\n @Listen('coursesIsInViewport', { target: 'window' })\n coursesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorCoursesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorCoursesLayer);\n }\n }\n\n @Listen('detailScrolled', { target: 'window' })\n onDetailScrolled() {\n if (!this.hasScrolled) {\n this.hasScrolled = true;\n this.applyCachedViewportState();\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.selectedCurrentStepLayer) {\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n @Listen('cardTouristicEventMouseOver', { target: 'window' })\n onTouristicEventMouseOver(event: CustomEvent<number>) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.addSelectedTouristicEvent(event.detail);\n }\n\n @Listen('cardTouristicEventMouseLeave', { target: 'window' })\n onTouristicEventMouseLeave() {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n\n @Listen('trekDownloadedSuccessConfirm', { target: 'window' })\n onTrekDownloadedSuccessConfirm() {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n }\n\n @Listen('trekDeleteSuccessConfirm', { target: 'window' })\n onTrekDeleteSuccessConfirm() {\n this.map.setMaxZoom(this.maxZoom);\n }\n\n @Listen('cardOutdoorSiteMouseOver', { target: 'window' })\n onOutdoorSiteMouseOver(event: CustomEvent<number>) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.addSelectedOutdoorSite(event.detail);\n }\n\n @Listen('cardOutdoorSiteMouseLeave', { target: 'window' })\n onOutdoorSiteMouseLeave() {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n\n componentWillLoad() {\n if (!state.language) {\n state.language = 'fr';\n }\n if (!state.languages) {\n state.languages = ['fr'];\n }\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, { zoom: 4, center: [47, 2], zoomControl: false });\n\n this.map.on('overlayadd', (event: any) => {\n const layer = event.layer;\n const isCustom = Object.values(this.customLayers).includes(layer);\n if (isCustom) {\n this.refreshSingleLayer(layer);\n }\n });\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: tileLayerOffline(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n crossOrigin: true,\n }),\n });\n });\n\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n }\n\n L.control.zoom({ zoomInTitle: translate[state.language].zoomIn, zoomOutTitle: translate[state.language].zoomOut }).addTo(this.map);\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n contract.title = translate[state.language].contract;\n\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n\n new (L.Control as any).SimpleLocate({\n position: 'topleft',\n className: 'button-locate',\n title: translate[state.language].locate,\n }).addTo(this.map);\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.currentOutdoorSite) {\n this.addOutdoorSite();\n } else if (state.currentOutdoorCourse) {\n this.addOutdoorCourse();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n } else if (state.touristicEvents) {\n this.addTouristicEvents();\n } else if (state.outdoorSites) {\n this.addOutdoorSites();\n }\n\n onChange('currentTreks', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentPois', async () => {\n this.setCurrentPois();\n });\n\n onChange('trekTouristicContents', async () => {\n this.setCurrentTouristicContents();\n });\n\n onChange('trekTouristicEvents', async () => {\n this.setCurrentTouristicEvents();\n });\n\n onChange('currentOutdoorSites', () => {\n if (state.currentOutdoorSites) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.addOutdoorSites(true);\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n this.updateCustomLayersVisibility();\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorSite) {\n this.removeOutdoorCourse();\n this.removeOutdoorSites();\n this.addOutdoorSite();\n } else if (state.currentOutdoorSites) {\n this.removeOutdoorSite();\n this.addOutdoorSites();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorCourse) {\n this.removeOutdoorSite();\n this.addOutdoorCourse();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (this.grwApp) {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (this.grwApp) {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n }\n });\n\n onChange('currentTouristicContents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTreks();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('currentTouristicEvents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicEvent) {\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTouristicEvents) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeOutdoorSites();\n this.removeTouristicEvent();\n this.addTouristicEvents(true);\n }\n });\n\n onChange('mode', () => {\n this.updateCustomLayersVisibility();\n });\n\n this.addCustomLayers();\n\n if (this.customLayersRefreshInterval > 0) {\n this.refreshIntervalId = window.setInterval(() => {\n this.refreshCustomLayers();\n }, this.customLayersRefreshInterval * 60 * 1000);\n }\n }\n\n disconnectedCallback() {\n if (this.refreshIntervalId) {\n window.clearInterval(this.refreshIntervalId);\n }\n }\n\n async addCustomLayers() {\n // 1. Process custom WMS layers\n if (this.customWmsUrl) {\n const wmsUrls = this.customWmsUrl.split(',');\n const wmsLayers = this.customWmsLayers ? this.customWmsLayers.split(',') : [];\n const wmsNames = this.customWmsName ? this.customWmsName.split(',') : [];\n const wmsAttributions = this.customWmsAttribution ? this.customWmsAttribution.split(',') : [];\n\n wmsUrls.forEach((url, index) => {\n const layerName = wmsLayers[index] || '';\n const displayName = wmsNames[index] || `WMS Layer ${index + 1}`;\n const attribution = wmsAttributions[index] || '';\n try {\n const wmsLayer = L.tileLayer.wms(url.trim(), {\n layers: layerName.trim(),\n format: 'image/png',\n transparent: true,\n maxZoom: this.maxZoom,\n version: '1.3.0',\n attribution: attribution.trim(),\n });\n this.customLayers[displayName.trim()] = wmsLayer;\n } catch (e) {\n console.error('Error adding WMS layer:', e);\n }\n });\n }\n // 1.5. Process custom Tile layers (XYZ / WMTS)\n if (this.customTileUrl) {\n const tileUrls = this.customTileUrl.split(',');\n const tileNames = this.customTileName ? this.customTileName.split(',') : [];\n const tileAttributions = this.customTileAttribution ? this.customTileAttribution.split(',') : [];\n\n tileUrls.forEach((url, index) => {\n const displayName = tileNames[index] || `Tile Layer ${index + 1}`;\n const attribution = tileAttributions[index] || '';\n try {\n const tileLayer = L.tileLayer(url.trim(), {\n maxZoom: this.maxZoom,\n attribution: attribution.trim(),\n });\n (tileLayer as any)._originalUrl = url.trim();\n this.customLayers[displayName.trim()] = tileLayer;\n } catch (e) {\n console.error('Error adding custom tile layer:', e);\n }\n });\n }\n\n // 2. Process custom GeoJSON layers\n if (this.customGeojsonUrl) {\n const geojsonUrls = this.customGeojsonUrl.split(',');\n const geojsonNames = this.customGeojsonName ? this.customGeojsonName.split(',') : [];\n const geojsonColors = this.customGeojsonColor ? this.customGeojsonColor.split(',') : [];\n const geojsonWeights = this.customGeojsonWeight ? this.customGeojsonWeight.split(',') : [];\n\n for (let index = 0; index < geojsonUrls.length; index++) {\n const url = geojsonUrls[index].trim();\n const displayName = geojsonNames[index] || `GeoJSON Layer ${index + 1}`;\n const fallbackColor = geojsonColors[index] || '#3388ff';\n const fallbackWeight = geojsonWeights[index] ? parseInt(geojsonWeights[index], 10) : 3;\n\n try {\n const response = await fetch(url, { cache: 'no-store' });\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const geojsonData = await response.json();\n\n const geojsonLayer = L.geoJSON(geojsonData, {\n style: (feature) => {\n const props = feature?.properties || {};\n const color = props.stroke || props.color || fallbackColor;\n const weight = props['stroke-width'] || props.weight || fallbackWeight;\n const opacity = props['stroke-opacity'] || props.opacity || 1.0;\n const fillColor = props.fill || props.fillColor || color;\n const fillOpacity = props['fill-opacity'] || props.fillOpacity || 0.2;\n\n return {\n color,\n weight,\n opacity,\n fillColor,\n fillOpacity,\n };\n },\n pointToLayer: (feature, latlng) => {\n const props = feature?.properties || {};\n const iconProp = props.icon || props['marker-symbol'];\n const nameProp = props.name || props.title || '';\n const descProp = props.description || props.desc || '';\n\n let marker;\n if (iconProp) {\n const isUrl = iconProp.startsWith('http') || iconProp.startsWith('/') || iconProp.startsWith('assets/');\n const size = this.commonMarkerSize;\n if (isUrl) {\n const customIcon = L.icon({\n iconUrl: iconProp,\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customIcon });\n } else {\n const bgColor = props['marker-color'] || props.backgroundColor || 'transparent';\n const borderColor = props['marker-stroke'] || props.borderColor || (bgColor !== 'transparent' ? '#ffffff' : 'transparent');\n const borderWeight = props['marker-stroke-width'] || (bgColor !== 'transparent' ? 2 : 0);\n const borderRadius = props['marker-radius'] || '50%';\n const customDivIcon = L.divIcon({\n html: `<div style=\"font-size: ${size * 0.6}px; display: flex; align-items: center; justify-content: center; width: ${size}px; height: ${size}px; background-color: ${bgColor}; border: ${borderWeight}px solid ${borderColor}; border-radius: ${borderRadius}; box-sizing: border-box;\">${iconProp}</div>`,\n className: '',\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customDivIcon });\n }\n } else {\n const color = props.stroke || props.color || fallbackColor;\n marker = L.circleMarker(latlng, {\n radius: 8,\n fillColor: color,\n color: '#fff',\n weight: 2,\n opacity: 1,\n fillOpacity: 0.8,\n });\n }\n\n if (nameProp || descProp) {\n let popupContent = `<div class=\"trek-departure-popup\" style=\"font-family: var(--font-family, sans-serif);\">`;\n if (props.image) {\n const imgUrl = props.image;\n popupContent += `<img src=\"${imgUrl}\" style=\"width: 100%; height: auto; border-top-left-radius: var(--border-radius, 8px); border-top-right-radius: var(--border-radius, 8px); max-height: 120px; object-fit: cover;\" />`;\n }\n if (nameProp) {\n popupContent += `<div class=\"trek-name\" style=\"padding: 12px 12px 4px 12px; margin: 0; color: var(--color-primary-app);\">${nameProp}</div>`;\n }\n if (descProp) {\n popupContent += `<div style=\"font-size: 12px; color: var(--color-on-surface-variant, #49454e); padding: ${nameProp ? '0px 12px 12px 12px' : '12px'}; line-height: 1.4; word-break: break-word;\">${descProp}</div>`;\n }\n popupContent += `</div>`;\n marker.bindPopup(popupContent, { closeButton: false });\n }\n return marker;\n }\n });\n\n (geojsonLayer as any)._customUrl = url;\n this.customLayers[displayName.trim()] = geojsonLayer;\n } catch (e) {\n console.error(`Error loading GeoJSON from ${url}:`, e);\n }\n }\n }\n\n this.updateCustomLayersVisibility();\n }\n\n refreshCustomLayers() {\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (this.map.hasLayer(layer)) {\n this.refreshSingleLayer(layer);\n }\n });\n }\n\n async refreshSingleLayer(layer: L.Layer) {\n if (layer instanceof L.TileLayer.WMS) {\n layer.setParams({ _t: Date.now() } as any);\n } else if (layer instanceof L.TileLayer) {\n const originalUrl = (layer as any)._originalUrl;\n if (originalUrl) {\n const separator = originalUrl.includes('?') ? '&' : '?';\n layer.setUrl(`${originalUrl}${separator}_t=${Date.now()}`);\n } else {\n layer.redraw();\n }\n } else if (layer instanceof L.GeoJSON) {\n const url = (layer as any)._customUrl;\n if (url) {\n try {\n const separator = url.includes('?') ? '&' : '?';\n const response = await fetch(`${url}${separator}_t=${Date.now()}`, { cache: 'no-store' });\n if (response.ok) {\n const newData = await response.json();\n layer.clearLayers();\n layer.addData(newData);\n }\n } catch (e) {\n console.error(`Error refreshing GeoJSON layer:`, e);\n }\n }\n }\n }\n\n updateCustomLayersVisibility() {\n const shouldShow = !this.grwApp || (state.mode === 'treks' && !!state.currentTrek);\n\n if (shouldShow && Object.keys(this.customLayers).length > 0 && !this.layersControl) {\n const baseLayers = {};\n this.tileLayer.forEach(tl => {\n baseLayers[tl.key] = tl.value;\n });\n this.layersControl = L.control.layers(baseLayers, {}, { collapsed: true }).addTo(this.map);\n }\n\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (shouldShow) {\n if (!this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n }\n if (this.layersControl) {\n const hasLayer = (this.layersControl as any)._layers.some(l => l.layer === layer);\n if (!hasLayer) {\n this.layersControl.addOverlay(layer, name);\n }\n }\n } else {\n if (this.map.hasLayer(layer)) {\n this.map.removeLayer(layer);\n }\n if (this.layersControl) {\n this.layersControl.removeLayer(layer);\n }\n }\n });\n\n if (shouldShow && Object.keys(this.customLayers).length > 0) {\n this.handleLayersControlEvent();\n }\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON, loading = false) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n this.layerDataIsLoading = loading;\n forceUpdate(this.hostElement);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n async addTreks(resetBounds = false) {\n this.addTreksController?.abort();\n this.addTreksController = new AbortController();\n const { signal } = this.addTreksController;\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if ((treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer addTreks() call or removeTreks() was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker-icon\" src=${treksIcons[geoJsonPoint.properties.practice]} /></div>`\n : `<div part=\"trek-marker-container\" class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image-popup';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"treks-marker-cluster-group-icon\" class=\"treks-marker-cluster-group-icon\">' + cluster.getChildCount() + '</div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n this.bounds && this.bounds._northEast && this.bounds._southWest && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n this.addTreksController?.abort();\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n handleTouristicEventsWithinBounds() {\n if (\n (state.currentTouristicEvents && !state.currentMapBounds) ||\n (state.currentTouristicEvents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents.filter(touristicEvent =>\n this.map.getBounds().contains(L.latLng(touristicEvent.geometry.coordinates[1], touristicEvent.geometry.coordinates[0])),\n );\n }\n }\n\n handleOutdoorSitesWithinBounds() {\n if (\n (state.currentOutdoorSites && !state.currentMapBounds) ||\n (state.currentOutdoorSites && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites.filter(outdoorSite => {\n const coordinates = pointOnFeature(outdoorSite.geometry as any).geometry.coordinates;\n return this.map.getBounds().contains(L.latLng(coordinates[1], coordinates[0]));\n });\n }\n }\n\n async addTrek() {\n const trekInStore: Trek = await getDataInStore('treks', state.currentTrek.id);\n if (trekInStore) {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n } else {\n this.map.setMaxZoom(this.maxZoom);\n }\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n onEachFeature: (_feature, layer) => {\n (layer as any).setText('>', {\n repeat: this.arrowRepeat,\n center: true,\n attributes: { 'fill': '#000000', 'font-weight': 'bold', 'font-size': '16px' },\n });\n },\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const parkingImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/parking.svg`);\n const currentParking: Feature = {\n type: 'Feature',\n properties: { name: state.currentTrek.advised_parking },\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<img part=\"parking-marker\" src=${parkingImageSrc} />`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const parkingTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n parkingTooltip.part = 'parking-tooltip';\n parkingTooltip.className = 'parking-tooltip';\n const parkingName = L.DomUtil.create('div');\n parkingName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n parkingTooltip.part = 'parking-name';\n parkingName.className = 'parking-name';\n parkingTooltip.appendChild(parkingName);\n layer.bindTooltip(parkingTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n sensitiveAreaTooltip.part = 'sensitive-area-tooltip';\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n sensitiveAreaName.part = 'sensitive-area-name';\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n await this.addCurrentInformationDesks(state.currentTrek);\n\n await this.addCurrentPois();\n\n await this.addCurrentSignages();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"point-reference-icon\" class=\"point-reference-icon\">${index}</div>`,\n className: '',\n iconSize: this.pointReferenceMarkerSize,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"step-marker\" class=\"step-marker\"><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${stepIndex}</div></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n let elevationTranslation = {\n 'y: ': '',\n 'x: ': '',\n 'Total Length: ': 'Longueur totale : ',\n 'Min Elevation: ': 'Altitude min : ',\n 'Max Elevation: ': 'Altitude max : ',\n };\n\n /* @ts-ignore */\n L.registerLocale('fr', elevationTranslation);\n /* @ts-ignore */\n L.setLocale('fr');\n\n const elevations = state.currentTrek.geometry.coordinates.map(coord => coord[2]).filter(el => el !== undefined && el !== null);\n const minMaxElevation = {\n yAxisMin: elevations.length > 0 ? Math.min(...elevations) * 0.75 : 0,\n yAxisMax: elevations.length > 0 ? Math.max(...elevations) * 1.25 : 0,\n };\n\n const elevationOptions = {\n elevationDiv: `#elevation-container`,\n theme: `custom-theme use-theme-color`,\n height: this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight,\n distanceMarkers: { distance: false, direction: false },\n summary: 'inline',\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n waypoints: false,\n almostOver: false,\n dragging: false,\n ...minMaxElevation,\n };\n this.elevationControl = (L.control as any).elevation(elevationOptions).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n (this.elevationControl as any).eleDiv.style.display = this.elevationDefaultState === 'visible' ? 'block' : 'none';\n forceUpdate(this.hostElement);\n\n const departureArrival: FeatureCollection = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[0] },\n properties: null,\n },\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[state.currentTrek.geometry.coordinates.length - 1] },\n properties: null,\n },\n ],\n };\n\n let index = 0;\n this.departureArrivalLayer = L.geoJSON(departureArrival, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\" class=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\"></div>`,\n className: '',\n iconSize: this.departureArrivalMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n });\n this.map.addLayer(this.departureArrivalLayer);\n\n this.handleLayersControl();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.map.on('eledata_loaded', () => {\n this.fitBoundsQueued = true;\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n });\n }\n\n async getIcons(featuresCollection, property) {\n const icons = {};\n for (let index = 0; index < featuresCollection.features.length; index++) {\n if (featuresCollection.features[index].properties[property]) {\n icons[featuresCollection.features[index].properties[property]] = await this.getIcon(featuresCollection.features[index].properties[property]);\n }\n }\n return icons;\n }\n\n async getIcon(pictogram) {\n let icon;\n if (!Capacitor.isNativePlatform()) {\n const dataInStore = await checkFileInStore(pictogram);\n icon = dataInStore ? window.URL.createObjectURL((await getFileInStore(pictogram)).data) : pictogram ? pictogram : null;\n } else {\n const image = await Filesystem.getUri({\n path: pictogram,\n directory: Directory.Data,\n });\n if (image) {\n icon = Capacitor.convertFileSrc(image.uri);\n }\n }\n\n return icon;\n }\n\n async addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n this.addSelectedCurrentTrekController?.abort();\n this.addSelectedCurrentTrekController = new AbortController();\n const { signal } = this.addSelectedCurrentTrekController;\n state.selectedTrekId = id;\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer hover or removal occurred during the await\n if (signal.aborted) {\n return;\n }\n\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker\" class=\"trek-marker\" src=${\n treksIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-button';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n this.addSelectedCurrentTrekController?.abort();\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.filter(attachment => attachment.type === 'image').length > 0\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail !== ''\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail\n : state.currentTrekSteps[stepIndex].attachments[0].url\n : null,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div part=\"selected-step-marker\" class=\"selected-step-marker\" ><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${geoJsonPoint.properties.index}</div></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-name';\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n trekButton.part = 'trek-name';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n if (state.selectedStepId) {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n }\n\n handleLayersControlEvent() {\n if (this.layersControl) {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n const overlay = (this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId);\n if (this.userLayersState[userLayerState.layerId] && overlay.layer._layers && Object.keys(overlay.layer._layers).length === 0) {\n this.layerDataIsLoading = true;\n forceUpdate(this.hostElement);\n }\n };\n }\n });\n }\n }\n\n removeTrek() {\n this.handleLayersOnRemove();\n }\n\n async showTrekLine(id) {\n this.removeSelectedCurrentTrek();\n this.showTrekLineController?.abort();\n this.showTrekLineController = new AbortController();\n const { signal } = this.showTrekLineController;\n const trekLine = await getTrekGeometry(id);\n\n // Abort if a newer hover or hideTrekLine occurred during the await\n if (signal.aborted) {\n return;\n }\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: trekLine.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n }\n\n hideTrekLine() {\n this.showTrekLineController?.abort();\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n async addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n async addTouristicContents(resetBounds = false) {\n this.addTouristicContentsController?.abort();\n this.addTouristicContentsController = new AbortController();\n const { signal } = this.addTouristicContentsController;\n state.touristicContentsWithinBounds = state.currentTouristicContents;\n\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContents) {\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n imgSrc:\n currentTouristicContent.attachments && currentTouristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicContent.attachments[0].thumbnail !== ''\n ? currentTouristicContent.attachments[0].thumbnail\n : currentTouristicContent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if ((touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-coordinates-popup';\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicContentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-content-marker-cluster-group-icon\" class=\"touristic-content-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n this.addTouristicContentsController?.abort();\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n async addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n const touristicEventType = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type);\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: touristicEventType ? touristicEventType.pictogram : null,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n const toutisticEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n toutisticEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n async addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc:\n touristicContent.attachments && touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicContent.attachments[0].thumbnail !== ''\n ? touristicContent.attachments[0].thumbnail\n : touristicContent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n const toutisticContentIcons = await this.getIcons(touristicContentFeatureCollection, 'category');\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentDeparturePopup.part = 'touristic-content-coordinates-popup';\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n async addTouristicEvents(resetBounds = false) {\n this.addTouristicEventsController?.abort();\n this.addTouristicEventsController = new AbortController();\n const { signal } = this.addTouristicEventsController;\n state.touristicEventsWithinBounds = state.currentTouristicEvents;\n\n const touristicEventsCurrentCoordinates = [];\n\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvents) {\n for (const currentTouristicEvent of state.currentTouristicEvents) {\n touristicEventsCurrentCoordinates.push(currentTouristicEvent.geometry.coordinates);\n\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicEvent.geometry.coordinates },\n properties: {\n id: currentTouristicEvent.id,\n name: currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === currentTouristicEvent.type)?.pictogram,\n imgSrc:\n currentTouristicEvent.attachments && currentTouristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicEvent.attachments[0].thumbnail !== ''\n ? currentTouristicEvent.attachments[0].thumbnail\n : currentTouristicEvent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.touristicEventsLayer) {\n if ((touristicEventsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const touristicEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.touristicEventsLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventCoordinatesPopup.part = 'touristic-event-coordinates-popup';\n touristicEventCoordinatesPopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventCoordinatesPopup.appendChild(touristicEventImg);\n }\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventCoordinatesPopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventCoordinatesPopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicEvent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicEventsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-event-marker-cluster-group-icon\" class=\"touristic-event-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n this.map.addLayer(this.touristicEventsMarkerClusterGroup);\n } else {\n if (touristicEventsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.touristicEventsLayer.clearLayers();\n this.touristicEventsLayer.addData(touristicEventsFeatureCollection);\n this.touristicEventsMarkerClusterGroup.clearLayers();\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n\n removeTouristicEvents() {\n this.addTouristicEventsController?.abort();\n if (this.touristicEventsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicEventsMarkerClusterGroup);\n this.touristicEventsLayer = null;\n this.touristicEventsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n }\n\n async addOutdoorSites(resetBounds = false) {\n this.addOutdoorSitesController?.abort();\n this.addOutdoorSitesController = new AbortController();\n const { signal } = this.addOutdoorSitesController;\n state.outdoorSitesWithinBounds = state.currentOutdoorSites;\n\n const outdoorSitesCurrentCoordinates = [];\n\n const outdoorSitesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n for (const currentOutdoorSite of state.currentOutdoorSites) {\n outdoorSitesFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(currentOutdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: currentOutdoorSite.id,\n name: currentOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentOutdoorSite.attachments && currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentOutdoorSite.attachments[0].thumbnail !== ''\n ? currentOutdoorSite.attachments[0].thumbnail\n : currentOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.outdoorSitesLayer) {\n if ((outdoorSitesCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n const outdoorSitesBbox = bbox(outdoorSitesFeatureCollection);\n this.bounds = L.latLngBounds([outdoorSitesBbox[1], outdoorSitesBbox[0]], [outdoorSitesBbox[3], outdoorSitesBbox[2]]);\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const outdoorSitesIcons = await this.getIcons(outdoorSitesFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.outdoorSitesLayer = L.geoJSON(outdoorSitesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteCoordinatesPopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteCoordinatesPopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteImg);\n }\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedOutdoorSite(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.outdoorSitesMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"outdoor-site-marker-cluster-group-icon\" class=\"outdoor-site-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n this.map.addLayer(this.outdoorSitesMarkerClusterGroup);\n } else {\n if (outdoorSitesCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(outdoorSitesCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.outdoorSitesLayer.clearLayers();\n this.outdoorSitesLayer.addData(outdoorSitesFeatureCollection);\n this.outdoorSitesMarkerClusterGroup.clearLayers();\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n\n removeOutdoorSites() {\n this.addOutdoorSitesController?.abort();\n if (this.outdoorSitesLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.outdoorSitesMarkerClusterGroup);\n this.outdoorSitesLayer = null;\n this.outdoorSitesMarkerClusterGroup = null;\n this.map.off('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n }\n\n async addOutdoorSite() {\n const OutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSite) {\n const outdoorSitePractice = state.outdoorPractices.find(outdoorPractice => outdoorPractice.id === state.currentOutdoorSite.practice);\n OutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorSite.geometry,\n properties: {\n id: state.currentOutdoorSite.id,\n name: state.currentOutdoorSite.name,\n practice: outdoorSitePractice ? outdoorSitePractice.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorSiteLayer) {\n const outdoorSitesIcons = await this.getIcons(OutdoorSiteFeatureCollection, 'practice');\n\n this.currentOutdoorSiteLayer = L.geoJSON(OutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorSiteLayer);\n }\n\n await this.addCurrentInformationDesks(state.currentOutdoorSite);\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n await this.addCurrentRelatedOutdoorSites();\n\n await this.addCurrentRelatedOutdoorCourses();\n\n this.handleLayersControl();\n\n this.map.invalidateSize();\n this.map.fitBounds(this.currentOutdoorSiteLayer.getBounds(), { maxZoom: this.maxZoom });\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n async addCurrentRelatedOutdoorSites() {\n const currentRelatedOutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorSites) {\n for (const currentRelatedOutdoorSite of state.currentRelatedOutdoorSites) {\n currentRelatedOutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorSite.geometry,\n properties: {\n id: currentRelatedOutdoorSite.id,\n name: currentRelatedOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentRelatedOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentRelatedOutdoorSite.attachments && currentRelatedOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorSite.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorSite.attachments[0].thumbnail\n : currentRelatedOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorSitesLayer && currentRelatedOutdoorSiteFeatureCollection.features.length > 0) {\n const outdoorSitesIcons = await this.getIcons(currentRelatedOutdoorSiteFeatureCollection, 'practice');\n\n this.currentRelatedOutdoorSitesLayer = L.geoJSON(currentRelatedOutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n async addCurrentRelatedOutdoorCourses() {\n const currentRelatedOutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorCourses) {\n for (const currentRelatedOutdoorCourse of state.currentRelatedOutdoorCourses) {\n currentRelatedOutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorCourse.geometry,\n properties: {\n id: currentRelatedOutdoorCourse.id,\n name: currentRelatedOutdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === currentRelatedOutdoorCourse.type)?.pictogram,\n imgSrc:\n currentRelatedOutdoorCourse.attachments && currentRelatedOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail\n : currentRelatedOutdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorCoursesLayer && currentRelatedOutdoorCourseFeatureCollection.features.length > 0) {\n const outdoorCoursesIcons = await this.getIcons(currentRelatedOutdoorCourseFeatureCollection, 'type');\n\n this.currentRelatedOutdoorCoursesLayer = L.geoJSON(currentRelatedOutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"><img part=\"outdoor-courses-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n removeOutdoorSite() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedTouristicEvent(id, customCoordinates?) {\n const touristicEventFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicEvents) {\n const touristicEvent = state.touristicEvents.find(touristicEvent => touristicEvent.id === id);\n\n touristicEventFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicEvent.geometry.coordinates },\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n category: state.touristicEventTypes.find(type => type.id === touristicEvent.type)?.pictogram,\n imgSrc:\n touristicEvent.attachments && touristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicEvent.attachments[0].thumbnail !== ''\n ? touristicEvent.attachments[0].thumbnail\n : touristicEvent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicEvent();\n state.selectedTouristicEventId = id;\n\n const touristicEventsIcons = await this.getIcons(touristicEventFeatureCollection, 'category');\n this.selectedTouristicEventLayer = L.geoJSON(touristicEventFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventDeparturePopup.part = 'touristic-event-coordinates-popup';\n touristicEventDeparturePopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventDeparturePopup.appendChild(touristicEventImg);\n }\n\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventDeparturePopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventDeparturePopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicEventPopupIsOpen) {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicEventPopupIsOpen = Boolean(state.selectedTouristicEventId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicEventId) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicEvent() {\n state.selectedTouristicEventId = null;\n this.selectedTouristicEventLayer && this.map.removeLayer(this.selectedTouristicEventLayer);\n this.selectedTouristicEventLayer = null;\n }\n\n async addOutdoorCourse() {\n const OutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourseType = state.outdoorCourseTypes.find(outdoorCourseType => outdoorCourseType.id === state.currentOutdoorCourse.type);\n OutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorCourse.geometry,\n properties: {\n id: state.currentOutdoorCourse.id,\n name: state.currentOutdoorCourse.name,\n type: outdoorCourseType ? outdoorCourseType.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorCourseLayer) {\n const outdoorCoursesIcons = await this.getIcons(OutdoorCourseFeatureCollection, 'type');\n this.currentOutdoorCourseLayer = L.geoJSON(OutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorCourseLayer);\n }\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n this.handleLayersControl();\n\n this.map.fitBounds(this.currentOutdoorCourseLayer.getBounds());\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeOutdoorCourse() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedOutdoorSite(id, _customCoordinates?) {\n const outdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n const outdoorSite = state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === id);\n if (outdoorSite && outdoorSite.geometry) {\n outdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorSite.id,\n name: outdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === outdoorSite.practice)?.pictogram,\n imgSrc:\n outdoorSite.attachments && outdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorSite.attachments[0].thumbnail !== ''\n ? outdoorSite.attachments[0].thumbnail\n : outdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n this.removeSelectedOutdoorSite();\n state.selectedOutdoorSiteId = id;\n\n const outdoorSitesIcons = await this.getIcons(outdoorSiteFeatureCollection, 'practice');\n this.selectedOutdoorSiteLayer = L.geoJSON(outdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteDeparturePopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteDeparturePopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteDeparturePopup.appendChild(outdoorSiteImg);\n }\n\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteDeparturePopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteDeparturePopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorSitePopupIsOpen) {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorSitePopupIsOpen = Boolean(state.selectedOutdoorSiteId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorSiteId) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n },\n style: { color: this.colorOutdoorArea, interactive: false },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorSite() {\n state.selectedOutdoorSiteId = null;\n this.selectedOutdoorSiteLayer && this.map.removeLayer(this.selectedOutdoorSiteLayer);\n this.selectedOutdoorSiteLayer = null;\n }\n\n async addSelectedOutdoorCourse(id, _customCoordinates?) {\n const outdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourse = state.currentOutdoorCourse;\n outdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorCourse.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorCourse.id,\n name: outdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === outdoorCourse.type)?.pictogram,\n imgSrc:\n outdoorCourse.attachments && outdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorCourse.attachments[0].thumbnail !== ''\n ? outdoorCourse.attachments[0].thumbnail\n : outdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedOutdoorCourse();\n state.selectedOutdoorCourseId = id;\n\n const outdoorCoursesIcons = await this.getIcons(outdoorCourseFeatureCollection, 'type');\n this.selectedOutdoorCourseLayer = L.geoJSON(outdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.type]\n ? `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorCourseDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorCourseDeparturePopup.part = 'outdoor-course-coordinates-popup';\n outdoorCourseDeparturePopup.className = 'outdoor-course-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorCourseImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorCourseImg.part = 'outdoor-course-coordinates-image';\n outdoorCourseImg.src = geoJsonPoint.properties.imgSrc;\n outdoorCourseDeparturePopup.appendChild(outdoorCourseImg);\n }\n\n const outdoorCourseName = L.DomUtil.create('div');\n outdoorCourseName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorCourseName.part = 'outdoor-course-name';\n outdoorCourseName.className = 'outdoor-course-name';\n outdoorCourseDeparturePopup.appendChild(outdoorCourseName);\n\n const outdoorCourseButton = L.DomUtil.create('button');\n outdoorCourseButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorCourseButton.part = 'outdoor-course-button';\n outdoorCourseButton.className = 'outdoor-course-button';\n outdoorCourseButton.onclick = () => this.outdoorCourseCardPress.emit(geoJsonPoint.properties.id);\n outdoorCourseDeparturePopup.appendChild(outdoorCourseButton);\n\n layer.bindPopup(outdoorCourseDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorCoursePopupIsOpen) {\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorCoursePopupIsOpen = Boolean(state.selectedOutdoorCourseId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorCourseId) {\n this.outdoorCoursePopupIsOpen = false;\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorCourse() {\n state.selectedOutdoorCourseId = null;\n this.selectedOutdoorCourseLayer && this.map.removeLayer(this.selectedOutdoorCourseLayer);\n this.selectedOutdoorCourseLayer = null;\n }\n\n async addCurrentPois() {\n if (state.poisData > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram\n ? `<div part=\"poi-marker\" class=\"poi-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"poi-marker\" class=\"poi-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n poiTooltip.part = 'poi-tooltip';\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n poiName.part = 'poi-name';\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n if (state.currentPois) {\n this.setCurrentPois();\n }\n }\n }\n\n setCurrentPois() {\n if (this.currentPoisLayer) {\n if (state.currentPois) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n this.currentPoisLayer.clearLayers();\n\n this.currentPoisLayer.addData(currentPoisFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentSignages() {\n if (state.currentSignages && state.currentSignages.length > 0) {\n const signageImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/signage.svg`);\n const currentSignagesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentSignage of state.currentSignages) {\n currentSignagesFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentSignage.name },\n geometry: currentSignage.geometry,\n });\n }\n\n this.currentSignagesLayer = L.geoJSON(currentSignagesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"signage-marker\" class=\"signage-marker\"><img part=\"signage-img\" src=${signageImageSrc} /><div part=\"signage-name\" class=\"signage-name\">${geoJsonPoint.properties.name}</div></div>`,\n className: '',\n iconSize: [this.commonMarkerSize * 1.2, this.commonMarkerSize * 0.8],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const signageTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n signageTooltip.part = 'signage-tooltip';\n signageTooltip.className = 'signage-tooltip';\n const signageName = L.DomUtil.create('div');\n signageName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n signageName.part = 'signage-name';\n signageName.className = 'signage-name';\n signageTooltip.appendChild(signageName);\n layer.bindTooltip(signageTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicContents() {\n if (state.touristicContentsData > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.category_pictogram\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img src=${geoJsonPoint.properties.category_pictogram} /></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.on('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentTooltip.part = 'touristic-content-tooltip';\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n\n if (state.trekTouristicContents) {\n this.setCurrentTouristicContents();\n }\n }\n }\n\n setCurrentTouristicContents() {\n if (this.currentToutisticContentsLayer) {\n if (state.trekTouristicContents) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n this.currentToutisticContentsLayer.clearLayers();\n\n this.currentToutisticContentsLayer.addData(currentTouristicContentsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentTouristicEvents() {\n if (state.touristicEventsData > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentTouristicEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventTooltip.part = 'touristic-event-tooltip';\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n\n if (state.trekTouristicEvents) {\n this.setCurrentTouristicEvents();\n }\n }\n }\n\n setCurrentTouristicEvents() {\n if (this.currentTouristicEventsLayer) {\n if (state.trekTouristicEvents) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.trekTouristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n this.currentTouristicEventsLayer.clearLayers();\n\n this.currentTouristicEventsLayer.addData(currentTouristicEventsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentInformationDesks(currentData) {\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks => currentData.information_desks.includes(currentInformationDesks.id))) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n if (currentInformationDesksFeatureCollection.features.length > 0) {\n const informationDesksIcons = await this.getIcons(currentInformationDesksFeatureCollection, 'type_pictogram');\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: informationDesksIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img src=${informationDesksIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksTooltip.part = 'information-desks-tooltip';\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksName.part = 'information-desks-name';\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n }\n }\n\n handleLayersControl() {\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (state.poisData > 0) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentSignagesLayer) {\n overlays[translate[state.language].layers.signages] = this.currentSignagesLayer;\n this.currentSignagesLayer.addTo(this.map);\n }\n if (state.touristicContentsData > 0) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n if (state.touristicEventsData > 0) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentTouristicEventsLayer;\n }\n\n if (this.currentRelatedOutdoorSitesLayer) {\n overlays[translate[state.language].layers.sites] = this.currentRelatedOutdoorSitesLayer;\n }\n\n if (this.currentRelatedOutdoorCoursesLayer) {\n overlays[translate[state.language].layers.courses] = this.currentRelatedOutdoorCoursesLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else if (Object.keys(overlays).length > 0) {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n }\n\n applyCachedViewportState() {\n if (!this.layersControl) return;\n\n const layerMap: { key: string; layer: L.GeoJSON; loading?: boolean }[] = [\n { key: 'steps', layer: this.currentStepsLayer },\n { key: 'description', layer: this.currentReferencePointsLayer },\n { key: 'parking', layer: this.currentParkingLayer },\n { key: 'sensitiveArea', layer: this.currentSensitiveAreasLayer },\n { key: 'informationPlaces', layer: this.currentInformationDesksLayer },\n { key: 'pois', layer: this.currentPoisLayer, loading: !state.currentPois || state.currentPois.length === 0 },\n { key: 'touristicContents', layer: this.currentToutisticContentsLayer, loading: !state.trekTouristicContents || state.trekTouristicContents.length === 0 },\n { key: 'touristicEvents', layer: this.currentTouristicEventsLayer, loading: !state.trekTouristicEvents || state.trekTouristicEvents.length === 0 },\n ];\n\n for (const { key, layer, loading } of layerMap) {\n if (layer && this.viewportState[key] !== undefined) {\n this.handleLayerVisibility(this.viewportState[key], layer, loading || false);\n }\n }\n }\n\n handleLayersOnRemove() {\n this.viewportState = {};\n this.hasScrolled = false;\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.departureArrivalLayer) {\n this.map.removeLayer(this.departureArrivalLayer);\n this.departureArrivalLayer = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentSignagesLayer) {\n this.map.removeLayer(this.currentSignagesLayer);\n this.currentSignagesLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentTouristicEventsLayer) {\n this.map.removeLayer(this.currentTouristicEventsLayer);\n this.currentTouristicEventsLayer = null;\n }\n if (this.currentOutdoorSiteLayer) {\n this.map.removeLayer(this.currentOutdoorSiteLayer);\n this.currentOutdoorSiteLayer = null;\n }\n if (this.currentOutdoorCourseLayer) {\n this.map.removeLayer(this.currentOutdoorCourseLayer);\n this.currentOutdoorCourseLayer = null;\n }\n if (this.currentRelatedOutdoorSitesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorSitesLayer);\n this.currentRelatedOutdoorSitesLayer = null;\n }\n if (this.currentRelatedOutdoorCoursesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorCoursesLayer);\n this.currentRelatedOutdoorCoursesLayer = null;\n }\n }\n\n @Listen('resize', { target: 'window' })\n onWindowResize() {\n this.handleView();\n }\n\n handleView() {\n const elevationHeight = this.mapElement.getBoundingClientRect().width >= this.largeViewSize ? this.elevationHeight : this.mobileElevationHeight;\n if (this.elevationControl) {\n (this.elevationControl.options as any).height = elevationHeight;\n (this.elevationControl as any).redraw();\n }\n if (this.map) {\n this.map.invalidateSize();\n }\n forceUpdate(this.hostElement);\n }\n\n handleElevation() {\n (this.elevationControl as any).eleDiv.style.display = (this.elevationControl as any).eleDiv.style.display === 'block' ? 'none' : 'block';\n (this.elevationControl as any).redraw();\n forceUpdate(this.hostElement);\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n\n return (\n <Host\n ref={el => (this.hostElement = el)}\n style={{\n '--font-family': this.fontFamily,\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-markers': this.colorMarkers ? this.colorMarkers : this.colorPrimaryApp,\n '--color-clusters': this.colorClusters ? this.colorClusters : this.colorPrimaryApp,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--elevation-height': (this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight)\n .toString()\n .concat('px'),\n }}\n >\n <div\n id=\"map\"\n part=\"map\"\n class={\n (state.currentTouristicContent || state.currentTouristicEvent || state.currentOutdoorSite || state.currentOutdoorCourse) && this.grwApp\n ? 'common-map'\n : state.currentTrek && this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block'\n ? 'trek-map-and-elevation'\n : state.currentTrek\n ? 'trek-map'\n : 'treks-map'\n }\n ref={el => (this.mapRef = el)}\n >\n {this.layerDataIsLoading && (\n <div class=\"layer-loader-container\">\n <div class=\"layer-loader\"></div>\n </div>\n )}\n {state.currentTrek && (\n <div class=\"grw-elevation-visibility-button-container\">\n <grw-fab\n exportparts=\"fab-visibility-button,fab-visibility-button-icon,fab-visibility-button-label\"\n font-family={this.fontFamily}\n action={() => this.handleElevation()}\n icon={() => (this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block' ? 'show-elevation' : 'hide-elevation')}\n showTitle={translate[state.language].showElevation}\n hideTitle={translate[state.language].hideElevation}\n fab-background-color={this.fabBackgroundColor}\n fab-color={this.fabColor}\n ></grw-fab>\n </div>\n )}\n </div>\n\n {!this.mapIsReady && (\n <div part=\"map-loader-container\" class=\"map-loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
|