Dateien
AegisSight-Globe/static/js/layers/weather.js
Claude Dev e8a9e49dba Neue Features: Regenradar, Ortssuche, City-Links, Fadenkreuz
REGENRADAR (RainViewer):
- Weltweit Niederschlagsradar als Overlay, kostenlos, kein API-Key
- 5min Refresh, 60% Transparenz

ORTSSUCHE (Nominatim/OpenStreetMap):
- Suchfeld im Header, Ergebnisse als Dropdown
- Klick fliegt zur Position
- Deutsche Ergebnisse

CITY QUICK-LINKS:
- 12 strategische Staedte als Schnellnavigation unter dem Header
- Berlin, Washington, Moskau, Peking, Tokio, London, Paris,
  Teheran, Kiew, Jerusalem, Taipei, Hormuz

FADENKREUZ + RANGE RINGS:
- Zuschaltbar im Panel
- Horizontale/vertikale Linie + 3 konzentrische Ringe
- Gruener taktischer Stil
2026-03-24 21:48:29 +01:00

57 Zeilen
2.0 KiB
JavaScript

/**
* Wetter-Layer: Regenradar via RainViewer (kostenlos, kein API-Key).
*/
const WeatherLayer = {
_viewer: null,
_layer: null,
_interval: null,
_count: 0,
start(viewer) {
if (this._layer) return;
this._viewer = viewer;
this._fetchAndShow();
var self = this;
this._interval = setInterval(function() { self._fetchAndShow(); }, 300000);
},
stop() {
if (this._interval) { clearInterval(this._interval); this._interval = null; }
if (this._layer && this._viewer) {
this._viewer.imageryLayers.remove(this._layer);
this._layer = null;
}
this._count = 0;
},
_fetchAndShow() {
var self = this;
var statusEl = document.getElementById('status-weather');
if (statusEl) { statusEl.textContent = 'Lade Radar...'; statusEl.classList.add('active'); }
fetch('https://api.rainviewer.com/public/weather-maps.json')
.then(function(r) { return r.json(); })
.then(function(data) {
var frames = (data.radar && data.radar.past) || [];
if (!frames.length) return;
var latest = frames[frames.length - 1];
var tileUrl = 'https://tilecache.rainviewer.com' + latest.path + '/256/{z}/{x}/{y}/2/1_1.png';
if (self._layer && self._viewer) {
self._viewer.imageryLayers.remove(self._layer);
}
self._layer = self._viewer.imageryLayers.addImageryProvider(
new Cesium.UrlTemplateImageryProvider({
url: tileUrl,
maximumLevel: 12,
credit: 'RainViewer',
})
);
self._layer.alpha = 0.6;
self._count = 1;
if (statusEl) statusEl.textContent = 'Regenradar aktiv';
})
.catch(function(e) { console.warn('Weather:', e); if (statusEl) statusEl.textContent = 'Fehler'; })
.finally(function() { setTimeout(function() { if (statusEl) statusEl.classList.remove('active'); }, 5000); });
},
};