diff --git a/src/UI/Map/ShowDataLayer.ts b/src/UI/Map/ShowDataLayer.ts index 255df6676..700bd28b6 100644 --- a/src/UI/Map/ShowDataLayer.ts +++ b/src/UI/Map/ShowDataLayer.ts @@ -154,7 +154,7 @@ class PointRenderingLayer { if (this._onClick) { const self = this - el.addEventListener("click", function (ev) { + el.addEventListener("click", function(ev) { ev.preventDefault() self._onClick(feature) // Workaround to signal the MapLibreAdaptor to ignore this click @@ -200,7 +200,7 @@ class LineRenderingLayer { "lineCap", "offset", "fill", - "fillColor", + "fillColor" ] as const private static readonly lineConfigKeysColor = ["color", "fillColor"] as const @@ -249,16 +249,8 @@ class LineRenderingLayer { imageAlongWay.map(async (img, i) => { const imgId = img.then.replaceAll(/[/.-]/g, "_") if (map.getImage(imgId) === undefined) { - await new Promise((resolve, reject) => { - map.loadImage(img.then, (err, image) => { - if (err) { - console.error("Could not add symbol layer to line due to", err) - return - } - map.addImage(imgId, image) - resolve() - }) - }) + const loadedImage = await map.loadImage(img.then) + map.addImage(imgId, loadedImage.data) } const spec: AddLayerObject = { @@ -272,8 +264,8 @@ class LineRenderingLayer { "icon-rotation-alignment": "map", "icon-pitch-alignment": "map", "icon-image": imgId, - "icon-size": 0.055, - }, + "icon-size": 0.055 + } } const filter = img.if?.asMapboxExpression() if (filter) { @@ -346,9 +338,9 @@ class LineRenderingLayer { type: "geojson", data: { type: "FeatureCollection", - features, + features }, - promoteId: "id", + promoteId: "id" }) const linelayer = this._layername + "_line" map.addLayer({ @@ -359,11 +351,11 @@ class LineRenderingLayer { "line-color": ["feature-state", "color"], "line-opacity": ["feature-state", "color-opacity"], "line-width": ["feature-state", "width"], - "line-offset": ["feature-state", "offset"], + "line-offset": ["feature-state", "offset"] }, layout: { - "line-cap": "round", - }, + "line-cap": "round" + } }) if (this._config.imageAlongWay) { @@ -396,8 +388,8 @@ class LineRenderingLayer { layout: {}, paint: { "fill-color": ["feature-state", "fillColor"], - "fill-opacity": ["feature-state", "fillColor-opacity"], - }, + "fill-opacity": ["feature-state", "fillColor-opacity"] + } }) if (this._onClick) { map.on("click", polylayer, (e) => { @@ -428,7 +420,7 @@ class LineRenderingLayer { this.currentSourceData = features src.setData({ type: "FeatureCollection", - features: this.currentSourceData, + features: this.currentSourceData }) } } @@ -512,14 +504,14 @@ export default class ShowDataLayer { layers.filter((l) => l.source !== null).map((l) => new FilteredLayer(l)), features, { - constructStore: (features, layer) => new SimpleFeatureSource(layer, features), + constructStore: (features, layer) => new SimpleFeatureSource(layer, features) } ) perLayer.forEach((fs) => { new ShowDataLayer(mlmap, { layer: fs.layer.layerDef, features: fs, - ...(options ?? {}), + ...(options ?? {}) }) }) } @@ -532,11 +524,12 @@ export default class ShowDataLayer { return new ShowDataLayer(map, { layer: ShowDataLayer.rangeLayer, features, - doShowLayer, + doShowLayer }) } - public destruct() {} + public destruct() { + } private zoomToCurrentFeatures(map: MlMap) { if (this._options.zoomToFeatures) { @@ -545,20 +538,21 @@ export default class ShowDataLayer { map.resize() map.fitBounds(bbox.toLngLat(), { padding: { top: 10, bottom: 10, left: 10, right: 10 }, - animate: false, + animate: false }) } } private initDrawFeatures(map: MlMap) { let { features, doShowLayer, fetchStore, selectedElement } = this._options - const onClick = - this._options.onClick ?? - (this._options.layer.title === undefined + let onClick = this._options.onClick + if (!onClick && selectedElement) { + onClick = (this._options.layer.title === undefined ? undefined : (feature: Feature) => { - selectedElement?.setData(feature) - }) + selectedElement?.setData(feature) + }) + } if (this._options.drawLines !== false) { for (let i = 0; i < this._options.layer.lineRendering.length; i++) { const lineRenderingConfig = this._options.layer.lineRendering[i]