MIF_E31221222/sigap-website/app/_components/map/layers/base-layer.tsx

32 lines
832 B
TypeScript

"use client"
import { useEffect, useRef } from "react"
import { useMap } from "react-map-gl/mapbox"
export interface BaseLayerProps {
visible?: boolean
beforeId?: string
}
export default function BaseLayer({ visible = true, beforeId }: BaseLayerProps) {
const { current: map } = useMap()
const layersAdded = useRef(false)
// Find the first symbol layer in the map style to insert layers before it
const getBeforeLayerId = (): string | undefined => {
if (!map || !beforeId) return undefined
if (beforeId) return beforeId
const layers = map.getStyle().layers
for (const layer of layers) {
if (layer.type === "symbol") {
return layer.id
}
}
return undefined
}
return { map, layersAdded, getBeforeLayerId }
}