diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx
index b99abbee956ae52217ab36e3487a631a5aef91ff..e75680935184415bad025041456baa2c45e3540f 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/choropleth-layer/ChoroplethOptions.tsx
@@ -26,10 +26,10 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti
     });
   }, [graphMetadata]);
 
-  const spatialAttributes = useMemo(() => {
-    if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return [];
-    return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]);
-  }, [settings.node]);
+  const spatialAttributes: { [id: string]: string[] } = {};
+  graphMetadata.nodes.labels.forEach((node) => {
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+  });
 
   const handleCollapseToggle = (nodeType: string) => {
     setCollapsed((prevCollapsed) => ({
@@ -61,8 +61,8 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti
                 label="Longitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lon}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })}
               />
 
@@ -71,8 +71,8 @@ export default function ChoroplethOptions({ settings, graphMetadata, updateSetti
                 label="Latitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lat}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })}
               />
             </div>
diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx
index 07e7a29491d3da0828f30b1b73865a29a9a826fc..9aa1d9b7d37992a964cd1b86b2d2c86a78ef6277 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/heatmap-layer/HeatLayerOptions.tsx
@@ -26,10 +26,10 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin
     });
   }, [graphMetadata]);
 
-  const spatialAttributes = useMemo(() => {
-    if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return [];
-    return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]);
-  }, [settings.node]);
+  const spatialAttributes: { [id: string]: string[] } = {};
+  graphMetadata.nodes.labels.forEach((node) => {
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+  });
 
   const handleCollapseToggle = (nodeType: string) => {
     setCollapsed((prevCollapsed) => ({
@@ -61,8 +61,8 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin
                 label="Longitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lon}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })}
               />
 
@@ -71,8 +71,8 @@ export default function HeatLayerOptions({ settings, graphMetadata, updateSettin
                 label="Latitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lat}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })}
               />
 
diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx
index 0fbb9088712e9f15efe7e1f958de11735a6abfac..b80743bdca30d14da54b32e1590e889b2e14fb01 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/icon-layer/IconOptions.tsx
@@ -26,10 +26,10 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }:
     });
   }, [graphMetadata]);
 
-  const spatialAttributes = useMemo(() => {
-    if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return [];
-    return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]);
-  }, [settings.node]);
+  const spatialAttributes: { [id: string]: string[] } = {};
+  graphMetadata.nodes.labels.forEach((node) => {
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+  });
 
   const handleCollapseToggle = (nodeType: string) => {
     setCollapsed((prevCollapsed) => ({
@@ -61,8 +61,8 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }:
                 label="Longitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lon}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })}
               />
 
@@ -71,8 +71,8 @@ export default function IconOptions({ settings, graphMetadata, updateSettings }:
                 label="Latitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lat}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })}
               />
               <div className="flex items-center gap-1">
diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx
index 7777348a92484a376d8ddb1cbfa273eb876e1afa..f376c542e1b347acfd9ee2f1268a65118e004a48 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/node-layer/NodeOptions.tsx
@@ -27,10 +27,10 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }:
     });
   }, [graphMetadata]);
 
-  const spatialAttributes = useMemo(() => {
-    if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return [];
-    return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]);
-  }, [settings.node]);
+  const spatialAttributes: { [id: string]: string[] } = {};
+  graphMetadata.nodes.labels.forEach((node) => {
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+  });
 
   const handleCollapseToggle = (nodeType: string) => {
     setCollapsed((prevCollapsed) => ({
@@ -62,8 +62,8 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }:
                 label="Longitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lon}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })}
               />
 
@@ -72,8 +72,8 @@ export default function NodeOptions({ settings, graphMetadata, updateSettings }:
                 label="Latitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lat}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })}
               />
 
diff --git a/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx b/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx
index dbfe79268a42450dd048915e4d74ef97586b0182..ee42c299c8dab0d3f30bd701572eb2f02339bfeb 100644
--- a/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx
+++ b/libs/shared/lib/vis/visualizations/mapvis/components/layers/nodelink-layer/NodeLinkOptions.tsx
@@ -41,10 +41,10 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
     });
   }, [graphMetadata]);
 
-  const spatialAttributes = useMemo(() => {
-    if (!settings.node || !(Object.keys(graphMetadata.nodes.types).length > 0)) return [];
-    return Object.entries(graphMetadata.nodes.types[settings.node].attributes).map((kv) => kv[0]);
-  }, [settings.node]);
+  const spatialAttributes: { [id: string]: string[] } = {};
+  graphMetadata.nodes.labels.forEach((node) => {
+    spatialAttributes[node] = Object.entries(graphMetadata.nodes.types[node].attributes).map((kv) => kv[0]);
+  });
 
   const handleCollapseToggle = (nodeType: string) => {
     setCollapsed((prevCollapsed) => ({
@@ -76,8 +76,8 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
                 label="Longitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lon}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lon: val as string } })}
               />
 
@@ -86,8 +86,8 @@ export default function NodeLinkOptions({ settings, graphMetadata, updateSetting
                 label="Latitude"
                 type="dropdown"
                 value={settings?.[nodeType]?.lat}
-                options={[...spatialAttributes]}
-                disabled={!settings.node || spatialAttributes.length < 1}
+                options={[...spatialAttributes[nodeType]]}
+                disabled={!settings.node || spatialAttributes[nodeType].length < 1}
                 onChange={(val) => updateSettings({ [nodeType]: { ...settings?.[nodeType], lat: val as string } })}
               />
             </div>