UNPKG

svelte-maplibre-gl

Version:

Build interactive web maps effortlessly with MapLibre GL JS and Svelte

53 lines (52 loc) 1.43 kB
import maplibregl from 'maplibre-gl'; let layerIdCounter = 0; let sourceIdCounter = 0; export function generateLayerID() { return `svmlgl-layer-${layerIdCounter++}`; } export function generateSourceID() { return `svmlgl-source-${sourceIdCounter++}`; } /** * Set an event listener on an Evented object, and return a function that will remove the listener. * * Intended to be used within the $effect rune. */ export function resetEventListener(evented, type, listener) { if (listener) { evented?.on(type, listener); } const prevListener = listener; return () => { if (prevListener) { evented?.off(type, prevListener); } }; } /** * Set a Layer event listener on the Map object, and return a function that will remove the listener. * * Intended to be used within the $effect rune. */ export function resetLayerEventListener(map, type, layer, listener) { if (listener) { map?.on(type, layer, listener); } const prevListener = listener; return () => { if (prevListener) { map?.off(type, layer, prevListener); } }; } export function formatLngLat(target, lnglat) { if (Array.isArray(target)) { return [lnglat.lng, lnglat.lat]; } else if ('lon' in target) { return { lon: lnglat.lng, lat: lnglat.lat }; } else { return { lng: lnglat.lng, lat: lnglat.lat }; } }