forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
| <script lang="ts">
 | |
|   /**
 | |
|    * The 'MaplibreMap' maps various event sources onto MapLibre.
 | |
|    *
 | |
|    * As it replaces the old 'MinimapObj' onto MapLibre and the existing codebase, this is sometimes a bit awkward
 | |
|    */
 | |
|   import { onMount } from "svelte"
 | |
|   import { Map } from "@onsvisual/svelte-maps"
 | |
|   import type { Map as MaplibreMap } from "maplibre-gl"
 | |
|   import type {Readable, Writable} from "svelte/store"
 | |
|   import { AvailableRasterLayers } from "../../Models/RasterLayers"
 | |
|   import {writable} from "svelte/store";
 | |
| 
 | |
|   /**
 | |
|    * Beware: this map will _only_ be set by this component
 | |
|    * It should thus be treated as a 'store' by external parties
 | |
|    */
 | |
|   export let map: Writable<MaplibreMap>
 | |
| 
 | |
|   export let attribution = false
 | |
|   export let center: Readable<{ lng: number ,lat : number }> = writable({lng: 0, lat: 0})
 | |
| 
 | |
|   onMount(() => {
 | |
|     $map.on("load", function () {
 | |
|       $map.resize()
 | |
|     })
 | |
|   })
 | |
|   const styleUrl = AvailableRasterLayers.maplibre.properties.url
 | |
| </script>
 | |
| 
 | |
| <main>
 | |
|   <Map
 | |
|     bind:center
 | |
|     bind:map={$map}
 | |
|     {attribution}
 | |
|     css="./maplibre-gl.css"
 | |
|     id="map"
 | |
|     location={{ lng: 0, lat: 0, zoom: 0 }}
 | |
|     maxzoom="24"
 | |
|     style={styleUrl}
 | |
|   />
 | |
| </main>
 | |
| 
 | |
| <style>
 | |
|   main {
 | |
|     width: 100%;
 | |
|     height: 100%;
 | |
|     position: relative;
 | |
|   }
 | |
| </style>
 |