src/lib/components/map/map-layers/CircleLayer.svelte (45 lines of code) (raw):

<script> import { onMount, getContext } from "svelte"; export let id export let source; export let sourceLayer; export let filter = undefined; export let layout = {}; export let paint = {}; export let zIndex = 0; export let beforeId = undefined; const { addLayer, removeLayer, setPaintProperty, setLayoutProperty, updateZIndexForLayer } = getContext('map'); const layer = { id, layout, "type": "circle", "source": source, "source-layer": sourceLayer, "paint": { "circle-color": "#C70000", "circle-radius": 6, "circle-opacity": 1, "circle-opacity-transition": { duration: 500 }, "circle-stroke-opacity-transition": { duration: 500 }, ...paint }, ...(filter && {"filter": filter}) }; $: if (layout) { for (const [key, value] of Object.entries(layout)) { setLayoutProperty(id, key, value); } } $: if (paint) { for (const [key, value] of Object.entries(paint)) { setPaintProperty(id, key, value); } } $: updateZIndexForLayer(id, zIndex); onMount(() => { addLayer(layer, zIndex, beforeId); return () => { removeLayer(id); } }); </script>