From 1d233fdc1964dd15f347257600896b887b62d5ee Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Fri, 27 Mar 2026 08:13:40 +0200 Subject: [PATCH] =?UTF-8?q?fix(geoportal):=20building=20labels=20=E2=80=94?= =?UTF-8?q?=20inline=20addLayer=20like=20terenuriLabel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed wrapper function/setTimeout approach. Now uses exact same inline addLayer pattern as terenuriLabel which is proven to work. Same source, same font, same coalesce pattern. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../geoportal/components/map-viewer.tsx | 45 ++++--------------- 1 file changed, 8 insertions(+), 37 deletions(-) diff --git a/src/modules/geoportal/components/map-viewer.tsx b/src/modules/geoportal/components/map-viewer.tsx index c74d5f3..6b36765 100644 --- a/src/modules/geoportal/components/map-viewer.tsx +++ b/src/modules/geoportal/components/map-viewer.tsx @@ -439,43 +439,14 @@ export const MapViewer = forwardRef( paint: { "fill-color": "#3b82f6", "fill-opacity": 0.5 } }); map.addLayer({ id: LAYER_IDS.cladiriLine, type: "line", source: SOURCES.cladiri, "source-layer": SOURCES.cladiri, minzoom: 14, paint: { "line-color": "#1e3a5f", "line-width": 0.6 } }); - // Building body labels (C1, C2...) — visible at high zoom - // cadastral_ref = "77102-C1" → display "C1" - { - // Add after a small delay to ensure the style is fully loaded - // and the source has been registered - const addBuildingLabels = () => { - try { - if (map.getLayer(LAYER_IDS.cladiriLabel)) return; - map.addLayer({ - id: LAYER_IDS.cladiriLabel, - type: "symbol", - source: SOURCES.cladiri, - "source-layer": SOURCES.cladiri, - minzoom: 17, - filter: ["has", "cadastral_ref"], - layout: { - "text-field": ["get", "cadastral_ref"], - "text-font": ["Noto Sans Regular"], - "text-size": 9, - "text-anchor": "center", - "text-allow-overlap": true, - "text-ignore-placement": true, - }, - paint: { - "text-color": "#1e3a8a", - "text-halo-color": "#ffffff", - "text-halo-width": 1.5, - }, - }); - } catch (e) { - console.warn("[map] building labels failed:", e); - } - }; - // Try immediately, retry after 2s if source not ready - try { addBuildingLabels(); } catch { /* */ } - setTimeout(addBuildingLabels, 2000); - } + // Building body labels — same pattern as terenuriLabel (which works) + map.addLayer({ id: LAYER_IDS.cladiriLabel, type: "symbol", source: SOURCES.cladiri, "source-layer": SOURCES.cladiri, minzoom: 17, + layout: { + "text-field": ["coalesce", ["get", "cadastral_ref"], ""], + "text-font": ["Noto Sans Regular"], + "text-size": 9, "text-anchor": "center", "text-allow-overlap": true, + }, + paint: { "text-color": "#1e3a8a", "text-halo-color": "#fff", "text-halo-width": 1.5 } }); // === Selection highlight === map.addLayer({ id: LAYER_IDS.selectionFill, type: "fill", source: SOURCES.terenuri, "source-layer": SOURCES.terenuri, minzoom: 13,