forked from MapComplete/MapComplete
		
	Merge develop
This commit is contained in:
		
						commit
						5a9f8f0a0a
					
				
					 62 changed files with 4448 additions and 710 deletions
				
			
		|  | @ -1,5 +1,5 @@ | |||
| import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource" | ||||
| import maplibregl, { Map as MLMap, Map as MlMap, SourceSpecification } from "maplibre-gl" | ||||
| import maplibregl, { Map as MLMap, Map as MlMap, ScaleControl, SourceSpecification } from "maplibre-gl" | ||||
| import { RasterLayerPolygon } from "../../Models/RasterLayers" | ||||
| import { Utils } from "../../Utils" | ||||
| import { BBox } from "../../Logic/BBox" | ||||
|  | @ -48,6 +48,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|     readonly rotation: UIEventSource<number> | ||||
|     readonly pitch: UIEventSource<number> | ||||
|     readonly useTerrain: Store<boolean> | ||||
|     readonly showScale: UIEventSource<boolean> | ||||
| 
 | ||||
|     private static pmtilesInited = false | ||||
|     /** | ||||
|  | @ -93,6 +94,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         this.useTerrain = state?.useTerrain ?? new ImmutableStore<boolean>(false) | ||||
|         this.rasterLayer = | ||||
|             state?.rasterLayer ?? new UIEventSource<RasterLayerPolygon | undefined>(undefined) | ||||
|         this.showScale = state?.showScale ?? new UIEventSource<boolean>(false) | ||||
| 
 | ||||
|         const lastClickLocation = new UIEventSource<{ | ||||
|             lat: number | ||||
|  | @ -131,6 +133,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|                 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) | ||||
|  | @ -144,6 +147,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|             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", () => { | ||||
|                 this.isFlying.setData(true) | ||||
|  | @ -221,6 +225,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         this.allowZooming.addCallbackAndRun((allowZooming) => self.setAllowZooming(allowZooming)) | ||||
|         this.bounds.addCallbackAndRunD((bounds) => self.setBounds(bounds)) | ||||
|         this.useTerrain?.addCallbackAndRun((useTerrain) => self.setTerrain(useTerrain)) | ||||
|         this.showScale?.addCallbackAndRun(showScale => self.setScale(showScale)) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -703,6 +708,32 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private scaleControl: maplibregl.ScaleControl = undefined | ||||
| 
 | ||||
|     private setScale(showScale: boolean) { | ||||
|         const map = this._maplibreMap.data | ||||
|         if (!map) { | ||||
|             return | ||||
|         } | ||||
|         if (!showScale) { | ||||
|             if(this.scaleControl){ | ||||
|                 map.removeControl(this.scaleControl) | ||||
|                 this.scaleControl = undefined | ||||
|             } | ||||
|             return | ||||
|         } | ||||
|         if (this.scaleControl === undefined) { | ||||
| 
 | ||||
|             this.scaleControl = new ScaleControl({ | ||||
|                 maxWidth: 100, | ||||
|                 unit: "metric" | ||||
|             }) | ||||
|         } | ||||
|         if (!map.hasControl(this.scaleControl)) { | ||||
|             map.addControl(this.scaleControl, "bottom-right") | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public flyTo(lon: number, lat: number, zoom: number) { | ||||
|         this.lockZoom() | ||||
|         window.requestAnimationFrame(() => { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue