diff --git a/lagebild/lagebild.js b/lagebild/lagebild.js
index 364e5df..4052197 100644
--- a/lagebild/lagebild.js
+++ b/lagebild/lagebild.js
@@ -628,39 +628,59 @@ var Lagebild = {
});
}
- var red = '#ef4444';
- var orange = '#f59e0b';
- var blue = '#3b82f6';
+ // Kategorie-Farben
+ var categoryColors = {
+ target: '#ef4444',
+ retaliation: '#f59e0b',
+ response: '#f59e0b',
+ actor: '#3b82f6',
+ mentioned: '#7b7b7b'
+ };
+ var categoryLabels = {
+ target: 'Angegriffene Ziele',
+ retaliation: 'Vergeltung / Eskalation',
+ response: 'Reaktion / Gegenmassnahmen',
+ actor: 'Strategische Akteure',
+ mentioned: 'Erwaehnt'
+ };
- var locs = [
- {n:'Teheran, Iran',lat:35.6892,lng:51.3890,d:'Hauptziel der US-israelischen Luftschl\u00e4ge. \u00dcber 1.000 Tote nach f\u00fcnf Tagen Krieg.',c:red},
- {n:'Beirut, Libanon',lat:33.8938,lng:35.5018,d:'Gleichzeitige US-israelische Luftschl\u00e4ge auf Beirut und Teheran [6].',c:red},
- {n:'Juffair, Bahrain',lat:26.2235,lng:50.6001,d:'US-Marinebasis \u2013 Ziel iranischer Vergeltungsraketen [3].',c:orange},
- {n:'Al Udeid, Katar',lat:25.1173,lng:51.3150,d:'US-Luftwaffenst\u00fctzpunkt \u2013 Ziel iranischer Gegenangriffe.',c:orange},
- {n:'Tel Aviv, Israel',lat:32.0853,lng:34.7818,d:'Operationsbasis f\u00fcr israelische Angriffe auf den Iran.',c:blue},
- {n:'Ankara, T\u00fcrkei',lat:39.9334,lng:32.8597,d:'NATO vermutet iranischen Raketenbeschuss auf T\u00fcrkei [10]. Keine NATO-Beteiligung geplant.',c:orange},
- {n:'Bagdad, Irak',lat:33.3152,lng:44.3661,d:'Lage im Irak als Faktor im Kriegsverlauf [2].',c:blue},
- {n:'Persischer Golf',lat:27.0,lng:51.5,d:'Iran greift Energieinfrastruktur und diplomatische Einrichtungen in der Golfregion an.',c:orange},
- {n:'Dubai, VAE',lat:25.2048,lng:55.2708,d:'US-Botschaft in Dubai durch iranischen Angriff getroffen.',c:red},
- {n:'Washington D.C., USA',lat:38.9072,lng:-77.0369,d:'War-Powers-Abstimmung im Senat gescheitert (47:53). Trump verteidigt Iran-Krieg vor Kongress.',c:blue}
- ];
+ // Locations aus API-Daten laden
+ var locs = (this.data && this.data.locations) ? this.data.locations : [];
- for (var i = 0; i < locs.length; i++) {
- var l = locs[i];
- L.marker([l.lat, l.lng], { icon: pulseIcon(l.c) })
- .addTo(this.map)
- .bindPopup('' + l.n + '
' + l.d + '');
+ if (locs.length === 0) {
+ var emptyDiv = document.createElement('div');
+ emptyDiv.style.cssText = 'position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;background:#151D2E;padding:20px 30px;border-radius:8px;border:1px solid #1E2D45;color:#8896AB;text-align:center;';
+ emptyDiv.innerHTML = 'Keine Standortdaten verfuegbar';
+ document.getElementById('map-container').appendChild(emptyDiv);
}
- // Dark legend
+ var usedCategories = {};
+ for (var i = 0; i < locs.length; i++) {
+ var l = locs[i];
+ if (!l.lat || !l.lon) continue;
+ var cat = l.category || 'mentioned';
+ var color = categoryColors[cat] || '#7b7b7b';
+ usedCategories[cat] = true;
+ var popupText = '' + (l.name || '') + '';
+ if (l.country_code) popupText += ' (' + l.country_code + ')';
+ popupText += '
' + (l.article_count || 0) + ' Artikel';
+ L.marker([l.lat, l.lon], { icon: pulseIcon(color) })
+ .addTo(this.map)
+ .bindPopup(popupText);
+ }
+
+ // Dark legend (dynamisch)
var legend = L.control({ position: 'bottomright' });
legend.onAdd = function() {
var div = L.DomUtil.create('div', 'map-legend');
div.style.cssText = 'background:#151D2E;padding:10px 14px;border-radius:4px;border:1px solid #1E2D45;box-shadow:0 2px 8px rgba(0,0,0,0.3);font-size:0.8rem;line-height:1.8;color:#E8ECF4;';
- div.innerHTML = 'Legende
'
- + '● Angegriffene Ziele
'
- + '● Vergeltung / Eskalation
'
- + '● Strategische Akteure';
+ var html = 'Legende
';
+ ['target', 'response', 'retaliation', 'actor', 'mentioned'].forEach(function(cat) {
+ if (usedCategories[cat]) {
+ html += '● ' + categoryLabels[cat] + '
';
+ }
+ });
+ div.innerHTML = html;
return div;
};
legend.addTo(this.map);