GeoJSON Polygon
Interactive map data
center: -98.137,40.137zoom: 4
pitch: 0
bearing: 0
minZoom: 0
maxZoom: 22
bounds: undefined
let map: maplibregl.Map | undefined;
let loaded: boolean;
let textLayers: maplibregl.LayerSpecification[] = [];
$: if (map && loaded) {
textLayers = map.getStyle().layers.filter((layer) => layer['source-layer'] === 'place');
}
$: colors = contrastingColor(fillColor);
$: if (map && loaded) {
for (let layer of textLayers) {
map.setPaintProperty(layer.id, 'text-color', colors.textColor);
map.setPaintProperty(layer.id, 'text-halo-color', colors.textOutlineColor);
}
}
<MapLibre
bind:map
bind:loaded
style="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json"
class={mapClasses}
standardControls
center={[-98.137, 40.137]}
zoom={4}
>
<GeoJSON id="states" data={states} promoteId="STATEFP">
{#if showFill}
<FillLayer
paint={{
'fill-color': hoverStateFilter(fillColor, colors.hoverBgColor),
'fill-opacity': 0.5,
}}
beforeLayerType="symbol"
/>
{/if}
{#if showBorder}
<LineLayer
layout={{ 'line-cap': 'round', 'line-join': 'round' }}
paint={{ 'line-color': borderColor, 'line-width': 3 }}
beforeLayerType="symbol"
/>
{/if}
</GeoJSON>
</MapLibre>