forked from MapComplete/MapComplete
		
	Merge master
This commit is contained in:
		
						commit
						890816d2dd
					
				
					 424 changed files with 40595 additions and 3354 deletions
				
			
		|  | @ -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<void>((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,11 +264,10 @@ 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() | ||||
|                 console.log(">>>", this._layername, imgId, img.if, "-->", filter) | ||||
|                 if (filter) { | ||||
|                     spec.filter = filter | ||||
|                 } | ||||
|  | @ -347,12 +338,12 @@ class LineRenderingLayer { | |||
|                     type: "geojson", | ||||
|                     data: { | ||||
|                         type: "FeatureCollection", | ||||
|                         features, | ||||
|                         features | ||||
|                     }, | ||||
|                     promoteId: "id", | ||||
|                     promoteId: "id" | ||||
|                 }) | ||||
|                 const linelayer = this._layername + "_line" | ||||
|                 map.addLayer({ | ||||
|                 const layer: AddLayerObject = { | ||||
|                     source: this._layername, | ||||
|                     id: linelayer, | ||||
|                     type: "line", | ||||
|  | @ -360,12 +351,17 @@ 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.dashArray) { | ||||
| 
 | ||||
|                     layer.paint["line-dasharray"] = this._config.dashArray?.split(" ")?.map(s => Number(s)) ?? null | ||||
|                 } | ||||
|                 map.addLayer(layer) | ||||
| 
 | ||||
|                 if (this._config.imageAlongWay) { | ||||
|                     this.addSymbolLayer(this._layername, this._config.imageAlongWay) | ||||
|  | @ -397,8 +393,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) => { | ||||
|  | @ -429,7 +425,7 @@ class LineRenderingLayer { | |||
|                 this.currentSourceData = features | ||||
|                 src.setData({ | ||||
|                     type: "FeatureCollection", | ||||
|                     features: this.currentSourceData, | ||||
|                     features: this.currentSourceData | ||||
|                 }) | ||||
|             } | ||||
|         } | ||||
|  | @ -513,14 +509,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 ?? {}) | ||||
|             }) | ||||
|         }) | ||||
|     } | ||||
|  | @ -533,11 +529,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) { | ||||
|  | @ -546,21 +543,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, selectedLayer } = this._options | ||||
|         const onClick = | ||||
|             this._options.onClick ?? | ||||
|             (this._options.layer.title === undefined | ||||
|         let { features, doShowLayer, fetchStore, selectedElement } = this._options | ||||
|         let onClick = this._options.onClick | ||||
|         if (!onClick && selectedElement) { | ||||
|             onClick = (this._options.layer.title === undefined | ||||
|                 ? undefined | ||||
|                 : (feature: Feature) => { | ||||
|                       selectedElement?.setData(feature) | ||||
|                       selectedLayer?.setData(this._options.layer) | ||||
|                   }) | ||||
|                     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] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue