Opis
Komponent niewidoczny z palety „Maps” – osobna scenografia od middleware TWeather i od map. Rysuje profesjonalne, realistyczne tło (nie styl cartoon/anime): atmosferyczne niebo, miękkie wolumetryczne chmury, intensywność opadów, słońce/księżyc, kierunek wiatru, opcjonalne gwiazdy w nocy za panelami z info/wykresami/tabelami. Host: TPanel / TImage / kontrolka z IWeatherSceneHost. Dane: Weather := Weather1 (auto ApplyJSON na OnDataReady) albo ręczne ApplyJSON. Mapy mogą podpiąć scenę później; główne użycie = chrome samodzielnej aplikacji pogodowej.
Moduł: MapCommon.Weather.Scene · Klasa bazowa: TComponent · Platformy: VCL + FMX

Demo na żywo
Presety dzień/noc/deszcz + ApplyJSON z przykładowego JSON TWeather (Scene nie woła API).
Presety (domyślnie Clear: niebieskie niebo + jasne słońce) + jedna duża etykieta Labels.Caption (Warszawa 25°C); live ApplyJSON przez TWeather (key=).
▶ Realistyczna animacja tła (Scene)Klik województwa → okno z Scene (Labels Style) + pola + HourStrip.
▶ Popup obszaru: Scene + daneFunkcje
- Bez serwera w Scene: tylko
TWeather.OnDataReady/DataJSON→ApplyJSON. - Dwukierunkowy link:
Weather.Scene↔Scene.Weather(AutoLinkComponents jak Map.Weather). - Stan: IsDay, CloudCover 0..1, PrecipIntensity 0..1, WindDirectionDeg, WindSpeedMs, SunVisible, StarsVisible, Overcast.
- Presety: wspAuto / Clear / PartlyCloudy / Overcast / Rain / NightClear / NightCloudy.
- Options: Animated, ShowStarsAtNight, IntensityScale, SoftClouds (miękkie realistyczne chmury).
- Host +
SceneJSON+OnStateChanged— panel za wykresami/tabelami, bez mapy. - Mapy opcjonalnie później; TWeather pozostaje middleware (bez wykresów jako rdzenia).
Właściwości
| Właściwość | Opis |
|---|---|
| Weather | TWeather — auto ApplyJSON na OnDataReady; reverse Weather.Scene. |
| Host | TPanel / TImage / kontrolka z IWeatherSceneHost (opcjonalnie). |
| Labels.* | Caption / ShowCaption / CaptionColor / CaptionFontSize — jedna duża etykieta na scenie (np. „Warszawa 25°C”). |
| AutoLinkComponents | True = szuka TWeather / hosta na formie. |
| Active, Preset | wspAuto albo ręczny preset wizualny. |
| Options.* | Animated, ShowStarsAtNight, IntensityScale, SoftClouds (realistyczne chmury). |
| IsDay, CloudCover, PrecipIntensity | Stan animacji (ustawiany też z JSON). |
| WindDirectionDeg, WindSpeedMs | Kierunek i siła wiatru (dryf chmur/deszczu). |
| SunVisible, StarsVisible, Overcast | Wypadkowe (przy Preset=wspAuto). |
Zdarzenia
| Zdarzenie | Opis |
|---|---|
| OnStateChanged(SceneJSON) | Po każdej zmianie stanu — payload dla hosta HTML/Canvas. |
Metody
| Metoda | Opis |
|---|---|
| ApplyJSON | Parsuj middleware JSON (current/hourly) → stan. BEZ sieci. |
| ApplyFromWeather | ApplyJSON(Weather.DataJSON). |
| SceneJSON / RefreshHost / Clear | Payload, wypchnięcie do Host, reset. |
| DetectLinkedComponents | Ponowne Weather / Host. |
Przykłady
Weather ↔ Scene + Request tylko w TWeather
// TWeather = middleware (serwer); TWeatherScene = animacja tła (NIE woła serwera)
procedure TForm1.FormCreate(Sender: TObject);
begin
Weather1.ApiKey := GetEnvironmentVariable('WEATHER_API_KEY');
Weather1.ForecastKind := wfkCurrent;
Weather1.Area.Kind := wakPoints;
Weather1.Area.Points.Text := '52.23,21.01'; // Warszawa
// Dwukierunkowe powiązanie (AutoLink też działa):
Weather1.Scene := WeatherScene1; // albo WeatherScene1.Weather := Weather1;
WeatherScene1.Host := PanelSky; // TPanel / TImage / WebView (IWeatherSceneHost)
WeatherScene1.Options.ShowStarsAtNight := True;
WeatherScene1.Options.Animated := True;
WeatherScene1.OnStateChanged := SceneStateChanged;
Weather1.OnDataReady := WeatherDataReady; // opcjonalnie — Scene i tak słucha OnDataReady
Weather1.Request; // TYLKO TWeather woła weather.imetroll.com
end;
procedure TForm1.WeatherDataReady(Sender: TObject; const JSON: string);
begin
// Ręczne podanie JSON (gdy nie używasz property Weather):
// WeatherScene1.ApplyJSON(JSON);
Memo1.Text := WeatherScene1.SceneJSON; // stan animacji dla hosta HTML/WebView
end;ApplyJSON / preset bez serwera
// ApplyJSON bez property Weather — nadal BEZ wywołania serwera przez Scene
procedure TForm1.BtnApplyClick(Sender: TObject);
begin
WeatherScene1.ApplyJSON(Weather1.DataJSON);
// albo preset bez JSON:
WeatherScene1.Preset := wspRain; // wspClear / wspOvercast / wspNightClear …
WeatherScene1.RefreshHost; // SceneJSON → Host / OnStateChanged
end;Host IWeatherSceneHost
// Host implementujący IWeatherSceneHost (np. TWebBrowser / własny panel)
type
TSkyPanel = class(TPanel, IWeatherSceneHost)
public
procedure ApplyWeatherScene(const SceneJSON: string);
end;
procedure TSkyPanel.ApplyWeatherScene(const SceneJSON: string);
begin
// WebView: ExecuteScript('window.scene.apply(' + SceneJSON + ')');
// albo własny Canvas / TImage — parsuj cloudCover, precipIntensity, isDay, …
end;Pełna lista API
Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia TWeatherScene (także dziedziczone), właściwości publiczne i metody publiczne.
Właściwości opublikowane (15)
| Właściwość | Typ | Domyślnie | Opis |
|---|---|---|---|
Weather | TWeather | ||
Host | TComponent | ||
AutoLinkComponents | Boolean | True | Automatycznie łącz pierwszy dostawcę wyszukiwania / TMapAreas / TEditMap z formy |
Active | Boolean | True | |
Preset | TWeatherScenePreset | wspAuto | |
Options | TWeatherSceneOptions | ||
Labels | TWeatherSceneLabels | ||
IsDay | Boolean | True | |
CloudCover | Double | ||
PrecipIntensity | Double | ||
WindDirectionDeg | Double | ||
WindSpeedMs | Double | ||
SunVisible | Boolean | True | |
StarsVisible | Boolean | False | |
Overcast | Boolean | False |
Zdarzenia (1)
| Zdarzenie | Typ | Opis |
|---|---|---|
OnStateChanged | TWeatherSceneStateEvent |
Właściwości publiczne – tylko w kodzie (1)
| Właściwość | Typ | Opis |
|---|---|---|
LastSceneJSON | string |
Metody publiczne (6)
| Metoda | Opis |
|---|---|
procedure ApplyJSON(const JSON: string) | |
procedure ApplyFromWeather | |
procedure Clear | Usuwa własne pliki |
procedure RefreshHost | |
function SceneJSON: string | |
procedure DetectLinkedComponents | Wyszukuje na formie i łączy dostawcę / TMapAreas / TEditMap |
Pełny opis wszystkich właściwości: dokumentacja komponentów map.
Zobacz też
TWeather
Pogoda na mapie: ikony i temperatura na obszarach (skórki iOS glass / Android / custom); JSON z weather.imetroll.com (current / godzinowo / 7 dni).