const LEGEND_MODES = { cables: { title: "线缆图例", }, satellites: { title: "卫星图例", }, bgp: { title: "BGP观测图例", }, }; let currentLegendMode = "cables"; let legendItemsByMode = { cables: [], satellites: [], bgp: [], }; export function initLegend() { renderLegend(currentLegendMode); } export function setLegendMode(mode) { const nextMode = LEGEND_MODES[mode] ? mode : "cables"; currentLegendMode = nextMode; renderLegend(currentLegendMode); } export function getLegendMode() { return currentLegendMode; } export function refreshLegend() { renderLegend(currentLegendMode); } export function setLegendItems(mode, items) { if (!LEGEND_MODES[mode]) return; legendItemsByMode[mode] = Array.isArray(items) ? items : []; if (mode === currentLegendMode) { renderLegend(currentLegendMode); } } function renderLegend(mode) { const legend = document.getElementById("legend"); if (!legend) return; const config = LEGEND_MODES[mode] || LEGEND_MODES.cables; const items = legendItemsByMode[mode] || []; const itemsHtml = items .map( (item) => `
${item.label}
`, ) .join(""); legend.innerHTML = `

${config.title}

${itemsHtml}
`; }