forked from MapComplete/MapComplete
		
	Chore: refactoring
This commit is contained in:
		
							parent
							
								
									12869321fd
								
							
						
					
					
						commit
						f1f8b75964
					
				
					 2 changed files with 64 additions and 85 deletions
				
			
		| 
						 | 
					@ -25,13 +25,13 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        "dragRotate",
 | 
					        "dragRotate",
 | 
				
			||||||
        "dragPan",
 | 
					        "dragPan",
 | 
				
			||||||
        "keyboard",
 | 
					        "keyboard",
 | 
				
			||||||
        "touchZoomRotate",
 | 
					        "touchZoomRotate"
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
    private static maplibre_zoom_handlers = [
 | 
					    private static maplibre_zoom_handlers = [
 | 
				
			||||||
        "scrollZoom",
 | 
					        "scrollZoom",
 | 
				
			||||||
        "boxZoom",
 | 
					        "boxZoom",
 | 
				
			||||||
        "doubleClickZoom",
 | 
					        "doubleClickZoom",
 | 
				
			||||||
        "touchZoomRotate",
 | 
					        "touchZoomRotate"
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
    readonly location: UIEventSource<{ lon: number; lat: number }>
 | 
					    readonly location: UIEventSource<{ lon: number; lat: number }>
 | 
				
			||||||
    private readonly isFlying = new UIEventSource(false)
 | 
					    private readonly isFlying = new UIEventSource(false)
 | 
				
			||||||
| 
						 | 
					@ -45,14 +45,14 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
    readonly lastClickLocation: Store<
 | 
					    readonly lastClickLocation: Store<
 | 
				
			||||||
        | undefined
 | 
					        | undefined
 | 
				
			||||||
        | {
 | 
					        | {
 | 
				
			||||||
              lon: number
 | 
					        lon: number
 | 
				
			||||||
              lat: number
 | 
					        lat: number
 | 
				
			||||||
              mode: "left" | "right" | "middle"
 | 
					        mode: "left" | "right" | "middle"
 | 
				
			||||||
              /**
 | 
					        /**
 | 
				
			||||||
               * The nearest feature from a MapComplete layer
 | 
					         * The nearest feature from a MapComplete layer
 | 
				
			||||||
               */
 | 
					         */
 | 
				
			||||||
              nearestFeature?: Feature
 | 
					        nearestFeature?: Feature
 | 
				
			||||||
          }
 | 
					    }
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
    readonly minzoom: UIEventSource<number>
 | 
					    readonly minzoom: UIEventSource<number>
 | 
				
			||||||
    readonly maxzoom: UIEventSource<number>
 | 
					    readonly maxzoom: UIEventSource<number>
 | 
				
			||||||
| 
						 | 
					@ -143,7 +143,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
                const features = map
 | 
					                const features = map
 | 
				
			||||||
                    .queryRenderedFeatures([
 | 
					                    .queryRenderedFeatures([
 | 
				
			||||||
                        [point.x - buffer, point.y - buffer],
 | 
					                        [point.x - buffer, point.y - buffer],
 | 
				
			||||||
                        [point.x + buffer, point.y + buffer],
 | 
					                        [point.x + buffer, point.y + buffer]
 | 
				
			||||||
                    ])
 | 
					                    ])
 | 
				
			||||||
                    .filter((f) => f.source.startsWith("mapcomplete_"))
 | 
					                    .filter((f) => f.source.startsWith("mapcomplete_"))
 | 
				
			||||||
                if (features.length === 1) {
 | 
					                if (features.length === 1) {
 | 
				
			||||||
| 
						 | 
					@ -172,38 +172,28 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
            lastClickLocation.setData({ lon, lat, mode, nearestFeature })
 | 
					            lastClickLocation.setData({ lon, lat, mode, nearestFeature })
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const syncStores = () => {
 | 
				
			||||||
 | 
					            this.MoveMapToCurrentLoc(this.location.data)
 | 
				
			||||||
 | 
					            this.SetZoom(this.zoom.data)
 | 
				
			||||||
 | 
					            this.setMaxBounds(this.maxbounds.data)
 | 
				
			||||||
 | 
					            this.setAllowMoving(this.allowMoving.data)
 | 
				
			||||||
 | 
					            this.setAllowRotating(this.allowRotating.data)
 | 
				
			||||||
 | 
					            this.setAllowZooming(this.allowZooming.data)
 | 
				
			||||||
 | 
					            this.setMinzoom(this.minzoom.data)
 | 
				
			||||||
 | 
					            this.setMaxzoom(this.maxzoom.data)
 | 
				
			||||||
 | 
					            this.setBounds(this.bounds.data)
 | 
				
			||||||
 | 
					            this.SetRotation(this.rotation.data)
 | 
				
			||||||
 | 
					            this.setScale(this.showScale.data)
 | 
				
			||||||
 | 
					            this.setTerrain(this.useTerrain.data)
 | 
				
			||||||
 | 
					            this.updateStores(true)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        maplibreMap.addCallbackAndRunD((map) => {
 | 
					        maplibreMap.addCallbackAndRunD((map) => {
 | 
				
			||||||
            map.on("load", () => {
 | 
					            map.on("load", () => {
 | 
				
			||||||
                console.log("Setting projection")
 | 
					                syncStores()
 | 
				
			||||||
                map.setProjection({
 | 
					 | 
				
			||||||
                    type: "globe" // Set projection to globe
 | 
					 | 
				
			||||||
                })
 | 
					 | 
				
			||||||
                self.MoveMapToCurrentLoc(self.location.data)
 | 
					 | 
				
			||||||
                self.SetZoom(self.zoom.data)
 | 
					 | 
				
			||||||
                self.setMaxBounds(self.maxbounds.data)
 | 
					 | 
				
			||||||
                self.setAllowMoving(self.allowMoving.data)
 | 
					 | 
				
			||||||
                self.setAllowRotating(self.allowRotating.data)
 | 
					 | 
				
			||||||
                self.setAllowZooming(self.allowZooming.data)
 | 
					 | 
				
			||||||
                self.setMinzoom(self.minzoom.data)
 | 
					 | 
				
			||||||
                self.setMaxzoom(self.maxzoom.data)
 | 
					 | 
				
			||||||
                self.setBounds(self.bounds.data)
 | 
					 | 
				
			||||||
                self.setTerrain(self.useTerrain.data)
 | 
					 | 
				
			||||||
                self.setScale(self.showScale.data)
 | 
					 | 
				
			||||||
                this.updateStores(true)
 | 
					 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            self.MoveMapToCurrentLoc(self.location.data)
 | 
					            syncStores()
 | 
				
			||||||
            self.SetZoom(self.zoom.data)
 | 
					
 | 
				
			||||||
            self.setMaxBounds(self.maxbounds.data)
 | 
					 | 
				
			||||||
            self.setAllowMoving(self.allowMoving.data)
 | 
					 | 
				
			||||||
            self.setAllowRotating(self.allowRotating.data)
 | 
					 | 
				
			||||||
            self.setAllowZooming(self.allowZooming.data)
 | 
					 | 
				
			||||||
            self.setMinzoom(self.minzoom.data)
 | 
					 | 
				
			||||||
            self.setMaxzoom(self.maxzoom.data)
 | 
					 | 
				
			||||||
            self.setBounds(self.bounds.data)
 | 
					 | 
				
			||||||
            self.SetRotation(self.rotation.data)
 | 
					 | 
				
			||||||
            self.setTerrain(self.useTerrain.data)
 | 
					 | 
				
			||||||
            self.setScale(self.showScale.data)
 | 
					 | 
				
			||||||
            this.updateStores(true)
 | 
					 | 
				
			||||||
            map.on("movestart", () => {
 | 
					            map.on("movestart", () => {
 | 
				
			||||||
                this.isFlying.setData(true)
 | 
					                this.isFlying.setData(true)
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
| 
						 | 
					@ -224,9 +214,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
            map.on("dblclick", (e) => {
 | 
					            map.on("dblclick", (e) => {
 | 
				
			||||||
                handleClick(e, "left")
 | 
					                handleClick(e, "left")
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            map.on("touchend", (e) => {
 | 
					
 | 
				
			||||||
                const touchEvent = e.originalEvent
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
            map.on("rotateend", (_) => {
 | 
					            map.on("rotateend", (_) => {
 | 
				
			||||||
                this.updateStores()
 | 
					                this.updateStores()
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
| 
						 | 
					@ -265,22 +253,22 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.location.addCallbackAndRunD((loc) => {
 | 
					        this.location.addCallbackAndRunD((loc) => {
 | 
				
			||||||
            self.MoveMapToCurrentLoc(loc)
 | 
					            this.MoveMapToCurrentLoc(loc)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        this.zoom.addCallbackAndRunD((z) => self.SetZoom(z))
 | 
					        this.zoom.addCallbackAndRunD((z) => this.SetZoom(z))
 | 
				
			||||||
        this.maxbounds.addCallbackAndRun((bbox) => self.setMaxBounds(bbox))
 | 
					        this.maxbounds.addCallbackAndRun((bbox) => this.setMaxBounds(bbox))
 | 
				
			||||||
        this.rotation.addCallbackAndRunD((bearing) => self.SetRotation(bearing))
 | 
					        this.rotation.addCallbackAndRunD((bearing) => this.SetRotation(bearing))
 | 
				
			||||||
        this.allowMoving.addCallbackAndRun((allowMoving) => {
 | 
					        this.allowMoving.addCallbackAndRun((allowMoving) => {
 | 
				
			||||||
            self.setAllowMoving(allowMoving)
 | 
					            this.setAllowMoving(allowMoving)
 | 
				
			||||||
            self.pingKeycodeEvent(allowMoving ? "unlocked" : "locked")
 | 
					            this.pingKeycodeEvent(allowMoving ? "unlocked" : "locked")
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        this.allowRotating.addCallbackAndRunD((allowRotating) =>
 | 
					        this.allowRotating.addCallbackAndRunD((allowRotating) =>
 | 
				
			||||||
            self.setAllowRotating(allowRotating)
 | 
					            this.setAllowRotating(allowRotating)
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        this.allowZooming.addCallbackAndRun((allowZooming) => self.setAllowZooming(allowZooming))
 | 
					        this.allowZooming.addCallbackAndRun((allowZooming) => this.setAllowZooming(allowZooming))
 | 
				
			||||||
        this.bounds.addCallbackAndRunD((bounds) => self.setBounds(bounds))
 | 
					        this.bounds.addCallbackAndRunD((bounds) => this.setBounds(bounds))
 | 
				
			||||||
        this.useTerrain?.addCallbackAndRun((useTerrain) => self.setTerrain(useTerrain))
 | 
					        this.useTerrain?.addCallbackAndRun((useTerrain) => this.setTerrain(useTerrain))
 | 
				
			||||||
        this.showScale?.addCallbackAndRun((showScale) => self.setScale(showScale))
 | 
					        this.showScale?.addCallbackAndRun((showScale) => this.setScale(showScale))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					@ -295,9 +283,9 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            map: mlmap,
 | 
					            map: mlmap,
 | 
				
			||||||
            ui: new SvelteUIElement(MaplibreMap, {
 | 
					            ui: new SvelteUIElement(MaplibreMap, {
 | 
				
			||||||
                map: mlmap,
 | 
					                map: mlmap
 | 
				
			||||||
            }),
 | 
					            }),
 | 
				
			||||||
            mapproperties: new MapLibreAdaptor(mlmap),
 | 
					            mapproperties: new MapLibreAdaptor(mlmap)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -365,7 +353,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        const event = {
 | 
					        const event = {
 | 
				
			||||||
            date: new Date(),
 | 
					            date: new Date(),
 | 
				
			||||||
            key: key,
 | 
					            key: key
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (let i = 0; i < this._onKeyNavigation.length; i++) {
 | 
					        for (let i = 0; i < this._onKeyNavigation.length; i++) {
 | 
				
			||||||
| 
						 | 
					@ -434,7 +422,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        element.style.transform = ""
 | 
					        element.style.transform = ""
 | 
				
			||||||
        const offset = style.match(/translate\(([-0-9]+)%, ?([-0-9]+)%\)/)
 | 
					        const offset = style.match(/translate\(([-0-9]+)%, ?([-0-9]+)%\)/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let labels = <HTMLElement[]>Array.from(element.getElementsByClassName("marker-label"))
 | 
					        const labels = <HTMLElement[]>Array.from(element.getElementsByClassName("marker-label"))
 | 
				
			||||||
        const origLabelTransforms = labels.map((l) => l.style.transform)
 | 
					        const origLabelTransforms = labels.map((l) => l.style.transform)
 | 
				
			||||||
        // We save the original width (`w`) and height (`h`) in order to restore them later on
 | 
					        // We save the original width (`w`) and height (`h`) in order to restore them later on
 | 
				
			||||||
        const w = element.style.width
 | 
					        const w = element.style.width
 | 
				
			||||||
| 
						 | 
					@ -554,7 +542,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        const bounds = map.getBounds()
 | 
					        const bounds = map.getBounds()
 | 
				
			||||||
        const bbox = new BBox([
 | 
					        const bbox = new BBox([
 | 
				
			||||||
            [bounds.getEast(), bounds.getNorth()],
 | 
					            [bounds.getEast(), bounds.getNorth()],
 | 
				
			||||||
            [bounds.getWest(), bounds.getSouth()],
 | 
					            [bounds.getWest(), bounds.getSouth()]
 | 
				
			||||||
        ])
 | 
					        ])
 | 
				
			||||||
        if (this.bounds.data === undefined || !isSetup) {
 | 
					        if (this.bounds.data === undefined || !isSetup) {
 | 
				
			||||||
            this.bounds.setData(bbox)
 | 
					            this.bounds.setData(bbox)
 | 
				
			||||||
| 
						 | 
					@ -748,14 +736,14 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
                type: "raster-dem",
 | 
					                type: "raster-dem",
 | 
				
			||||||
                url:
 | 
					                url:
 | 
				
			||||||
                    "https://api.maptiler.com/tiles/terrain-rgb/tiles.json?key=" +
 | 
					                    "https://api.maptiler.com/tiles/terrain-rgb/tiles.json?key=" +
 | 
				
			||||||
                    Constants.maptilerApiKey,
 | 
					                    Constants.maptilerApiKey
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                while (!map?.isStyleLoaded()) {
 | 
					                while (!map?.isStyleLoaded()) {
 | 
				
			||||||
                    await Utils.waitFor(250)
 | 
					                    await Utils.waitFor(250)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                map.setTerrain({
 | 
					                map.setTerrain({
 | 
				
			||||||
                    source: id,
 | 
					                    source: id
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
            } catch (e) {
 | 
					            } catch (e) {
 | 
				
			||||||
                console.error(e)
 | 
					                console.error(e)
 | 
				
			||||||
| 
						 | 
					@ -780,7 +768,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        if (this.scaleControl === undefined) {
 | 
					        if (this.scaleControl === undefined) {
 | 
				
			||||||
            this.scaleControl = new ScaleControl({
 | 
					            this.scaleControl = new ScaleControl({
 | 
				
			||||||
                maxWidth: 100,
 | 
					                maxWidth: 100,
 | 
				
			||||||
                unit: "metric",
 | 
					                unit: "metric"
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!map.hasControl(this.scaleControl)) {
 | 
					        if (!map.hasControl(this.scaleControl)) {
 | 
				
			||||||
| 
						 | 
					@ -793,7 +781,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap {
 | 
				
			||||||
        window.requestAnimationFrame(() => {
 | 
					        window.requestAnimationFrame(() => {
 | 
				
			||||||
            this._maplibreMap.data?.flyTo({
 | 
					            this._maplibreMap.data?.flyTo({
 | 
				
			||||||
                zoom,
 | 
					                zoom,
 | 
				
			||||||
                center: [lon, lat],
 | 
					                center: [lon, lat]
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
 | 
					import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
 | 
				
			||||||
import type { AddLayerObject, Map as MlMap } from "maplibre-gl"
 | 
					import type { AddLayerObject, Alignment, Map as MlMap } from "maplibre-gl"
 | 
				
			||||||
import { GeoJSONSource, Marker } from "maplibre-gl"
 | 
					import { GeoJSONSource, Marker } from "maplibre-gl"
 | 
				
			||||||
import { ShowDataLayerOptions } from "./ShowDataLayerOptions"
 | 
					import { ShowDataLayerOptions } from "./ShowDataLayerOptions"
 | 
				
			||||||
import { GeoOperations } from "../../Logic/GeoOperations"
 | 
					import { GeoOperations } from "../../Logic/GeoOperations"
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,7 @@ import PerLayerFeatureSourceSplitter from "../../Logic/FeatureSource/PerLayerFea
 | 
				
			||||||
import FilteredLayer from "../../Models/FilteredLayer"
 | 
					import FilteredLayer from "../../Models/FilteredLayer"
 | 
				
			||||||
import SimpleFeatureSource from "../../Logic/FeatureSource/Sources/SimpleFeatureSource"
 | 
					import SimpleFeatureSource from "../../Logic/FeatureSource/Sources/SimpleFeatureSource"
 | 
				
			||||||
import { TagsFilter } from "../../Logic/Tags/TagsFilter"
 | 
					import { TagsFilter } from "../../Logic/Tags/TagsFilter"
 | 
				
			||||||
 | 
					import { LayerConfigJson } from "../../Models/ThemeConfig/Json/LayerConfigJson"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PointRenderingLayer {
 | 
					class PointRenderingLayer {
 | 
				
			||||||
    private readonly _config: PointRenderingConfig
 | 
					    private readonly _config: PointRenderingConfig
 | 
				
			||||||
| 
						 | 
					@ -47,19 +48,18 @@ class PointRenderingLayer {
 | 
				
			||||||
        this._fetchStore = fetchStore
 | 
					        this._fetchStore = fetchStore
 | 
				
			||||||
        this._onClick = onClick
 | 
					        this._onClick = onClick
 | 
				
			||||||
        this._selectedElement = selectedElement
 | 
					        this._selectedElement = selectedElement
 | 
				
			||||||
        const self = this
 | 
					 | 
				
			||||||
        if (!features?.features) {
 | 
					        if (!features?.features) {
 | 
				
			||||||
            throw (
 | 
					            throw (
 | 
				
			||||||
                "Could not setup a PointRenderingLayer; features?.features is undefined/null. The layer is " +
 | 
					                "Could not setup a PointRenderingLayer; features?.features is undefined/null. The layer is " +
 | 
				
			||||||
                layer.id
 | 
					                layer.id
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        features.features?.addCallbackAndRunD((features) => self.updateFeatures(features))
 | 
					        features.features?.addCallbackAndRunD((features) => this.updateFeatures(features))
 | 
				
			||||||
        visibility?.addCallbackAndRunD((visible) => {
 | 
					        visibility?.addCallbackAndRunD((visible) => {
 | 
				
			||||||
            if (visible === true && self._dirty) {
 | 
					            if (visible === true && this._dirty) {
 | 
				
			||||||
                self.updateFeatures(features.features.data)
 | 
					                this.updateFeatures(features.features.data)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            self.setVisibility(visible)
 | 
					            this.setVisibility(visible)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        selectedElement?.addCallbackAndRun((selected) => {
 | 
					        selectedElement?.addCallbackAndRun((selected) => {
 | 
				
			||||||
            this._markedAsSelected.forEach((el) => el.classList.remove("selected"))
 | 
					            this._markedAsSelected.forEach((el) => el.classList.remove("selected"))
 | 
				
			||||||
| 
						 | 
					@ -123,7 +123,7 @@ class PointRenderingLayer {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                const loc = GeoOperations.featureToCoordinateWithRenderingType(
 | 
					                const loc = GeoOperations.featureToCoordinateWithRenderingType(
 | 
				
			||||||
                    <any>feature,
 | 
					                    feature,
 | 
				
			||||||
                    location
 | 
					                    location
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
                if (loc === undefined) {
 | 
					                if (loc === undefined) {
 | 
				
			||||||
| 
						 | 
					@ -199,10 +199,10 @@ class PointRenderingLayer {
 | 
				
			||||||
            .addTo(this._map)
 | 
					            .addTo(this._map)
 | 
				
			||||||
        store
 | 
					        store
 | 
				
			||||||
            .map((tags) => this._config.pitchAlignment.GetRenderValue(tags).Subs(tags).txt)
 | 
					            .map((tags) => this._config.pitchAlignment.GetRenderValue(tags).Subs(tags).txt)
 | 
				
			||||||
            .addCallbackAndRun((pitchAligment) => marker.setPitchAlignment(<any>pitchAligment))
 | 
					            .addCallbackAndRun((pitchAligment) => marker.setPitchAlignment(<Alignment>pitchAligment))
 | 
				
			||||||
        store
 | 
					        store
 | 
				
			||||||
            .map((tags) => this._config.rotationAlignment.GetRenderValue(tags).Subs(tags).txt)
 | 
					            .map((tags) => this._config.rotationAlignment.GetRenderValue(tags).Subs(tags).txt)
 | 
				
			||||||
            .addCallbackAndRun((pitchAligment) => marker.setRotationAlignment(<any>pitchAligment))
 | 
					            .addCallbackAndRun((pitchAligment) => marker.setRotationAlignment(<Alignment>pitchAligment))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (feature.geometry.type === "Point") {
 | 
					        if (feature.geometry.type === "Point") {
 | 
				
			||||||
            // When the tags get 'pinged', check that the location didn't change
 | 
					            // When the tags get 'pinged', check that the location didn't change
 | 
				
			||||||
| 
						 | 
					@ -261,10 +261,9 @@ class LineRenderingLayer {
 | 
				
			||||||
        this._visibility = visibility
 | 
					        this._visibility = visibility
 | 
				
			||||||
        this._fetchStore = fetchStore
 | 
					        this._fetchStore = fetchStore
 | 
				
			||||||
        this._onClick = onClick
 | 
					        this._onClick = onClick
 | 
				
			||||||
        const self = this
 | 
					        features.features.addCallbackAndRunD(() => this.update(features.features))
 | 
				
			||||||
        features.features.addCallbackAndRunD(() => self.update(features.features))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        map.on("styledata", () => self.update(features.features))
 | 
					        map.on("styledata", () => this.update(features.features))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public destruct(): void {
 | 
					    public destruct(): void {
 | 
				
			||||||
| 
						 | 
					@ -324,7 +323,7 @@ class LineRenderingLayer {
 | 
				
			||||||
        calculatedProps.fillColor = calculatedProps.fillColor ?? calculatedProps.color
 | 
					        calculatedProps.fillColor = calculatedProps.fillColor ?? calculatedProps.color
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (const key of LineRenderingLayer.lineConfigKeysColor) {
 | 
					        for (const key of LineRenderingLayer.lineConfigKeysColor) {
 | 
				
			||||||
            let v = <string>calculatedProps[key]
 | 
					            const v = <string>calculatedProps[key]
 | 
				
			||||||
            if (v === undefined) {
 | 
					            if (v === undefined) {
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -353,14 +352,6 @@ class LineRenderingLayer {
 | 
				
			||||||
        // As such, we only now read the features from the featureSource and compare with the previously set data
 | 
					        // As such, we only now read the features from the featureSource and compare with the previously set data
 | 
				
			||||||
        const features = featureSource.data
 | 
					        const features = featureSource.data
 | 
				
			||||||
        const src = <GeoJSONSource>map.getSource(this._layername)
 | 
					        const src = <GeoJSONSource>map.getSource(this._layername)
 | 
				
			||||||
        if (
 | 
					 | 
				
			||||||
            src !== undefined &&
 | 
					 | 
				
			||||||
            this.currentSourceData === features &&
 | 
					 | 
				
			||||||
            src._data === <any>features
 | 
					 | 
				
			||||||
        ) {
 | 
					 | 
				
			||||||
            // Already up to date
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // Add source to the map or update the feature source
 | 
					            // Add source to the map or update the feature source
 | 
				
			||||||
            if (src === undefined) {
 | 
					            if (src === undefined) {
 | 
				
			||||||
| 
						 | 
					@ -516,7 +507,7 @@ class LineRenderingLayer {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class ShowDataLayer {
 | 
					export default class ShowDataLayer {
 | 
				
			||||||
    public static rangeLayer = new LayerConfig(<any>range_layer, "ShowDataLayer.ts:range.json")
 | 
					    public static rangeLayer = new LayerConfig(<LayerConfigJson>range_layer, "ShowDataLayer.ts:range.json")
 | 
				
			||||||
    private readonly _options: ShowDataLayerOptions & {
 | 
					    private readonly _options: ShowDataLayerOptions & {
 | 
				
			||||||
        layer: LayerConfig
 | 
					        layer: LayerConfig
 | 
				
			||||||
        drawMarkers?: true | boolean
 | 
					        drawMarkers?: true | boolean
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue