SCHIFFSTYP-FILTER:
- 6 Kategorien: Tanker (rot), Cargo (orange), Passagier (gruen),
Fischerei (blau), Militaer (magenta), Sonstige (grau)
- Einzeln ein-/ausblendbar via Checkboxen im Panel
- Farbkodierte Punkte nach Schiffstyp
KURSLINIEN-PROJEKTION:
- Zuschaltbar per Checkbox
- Zeigt 30min-Vorausprojektion basierend auf COG + SOG
- Farblich passend zum Schiffstyp, halbtransparent
DARK SHIPS ERKENNUNG:
- Backend erkennt Schiffe die >10min kein AIS-Update senden
- Positionshistorie (letzte 10 Positionen) gespeichert
- API-Endpoint: GET /api/ships/dark
- Verdaechtig wenn vorher aktiv (SOG>0.5) und jetzt still
Backend: ship_type aus AISStream MetaData gespeichert,
AIS-Typcode zu Kategorie klassifiziert (IMO Standard).
Cluster-Klick Distanzen erhoeht: far 2.000->4.000km, medium 500->1.500km.
trackedEntity auf undefined gesetzt vor selectedEntity (verhindert Auto-Tracking).
Flugverkehr + Schiffsverkehr:
- Weit (>5.000km): 5-Grad-Raster-Cluster mit Anzahl-Labels
- Mittel (1.000-5.000km): 2-Grad-Raster-Cluster
- Nah (<1.000km): Einzelne Punkte, Klick zeigt Details
Cluster: Punktgroesse proportional zu sqrt(Anzahl), weisses Count-Label.
Klick auf Cluster zoomt rein. Klick auf Einzelpunkt zeigt Info.
Kamera-Listener reagiert auf Zoom-Aenderungen (20% Schwelle).
Entity API (6.500+ Objekte mit Point+Label+Description) war zu schwer.
PointPrimitiveCollection ist WebGL/GPU-beschleunigt im CLIENT-Browser
und kann hunderttausende Punkte fluessig darstellen.
Klick-Details ueber ScreenSpaceEventHandler mit naechstem-Punkt-Suche.
Kein Server-GPU noetig — alles rendert im Browser des Users.
Flights: OpenSky liefert 6.500+ global, korrekte Hoehenkonvertierung
(ft->m), Cesium Entity-Clustering bei 30px/5min, Labels nur < 800km.
Status-Text zeigt Anzahl nach Laden.
Ships: Entity-Clustering aktiviert (25px/5min), Labels nur < 300km.
Status-Text zeigt Anzahl.
Beide Layer zeigen jetzt ALLE Daten komplett — Ukraine, Belarus,
Nahost, Afrika, Russland, China alles enthalten.
- Animierter Ladebalken unter jedem Layer-Toggle bei Datenabruf
- Status-Text (Lade Daten.../Fehler beim Laden)
- Fetch-Wrapper: nur 401 redirected zum Login, nicht 403
- Ortsnamen: minimumLevel, tileWidth/Height, LINEAR Texture-Filter
fuer konsistente Schriftgroessen beim Laden
CLAMP_TO_GROUND durch NONE ersetzt bei Schiffen, Erdbeben, GDELT.
CLAMP_TO_GROUND verursacht Positionsneuberechnung gegen Terrain
bei jeder Kamerabewegung, was zu sichtbarem Mitschleifen fuehrt.