Opis
Komponent niewidoczny (alias TEdit3DMap) podłączany do T3DMapVCL/FMX. Trzyma wszystkie zmiany stylu, pozwala je cofać i ponawiać, zapisuje je do pliku JSON i przywraca ustawienia fabryczne. Okno edytora ma drzewo kategorii i warstw.
Moduł: MapCommon.EditMap (+ EditMapVCL / EditMapFMX) · Klasa bazowa: TComponent · Platformy: VCL + FMX

Demo na żywo
Edycja kolorów i widoczności kategorii warstw, Cofnij/Ponów, Przywróć domyślne i zapis JSON (map-edit-settings) – jak TEditMap.
Funkcje
- Drzewo: kategorie (tło, zieleń, woda, drogi, budynki, etykiety…) → warstwy stylu.
- Kolor, przezroczystość, grubość, widoczność; zmiany na żywo na mapie.
- Cofnij / Ponów (
UndoLimit), grupowanie zmianBeginUpdate/EndUpdate. - Zapis i odczyt JSON:
SaveToFile,LoadFromFile,SaveToJSON,LoadFromJSON. SettingsFilez edytorem *.json w Object Inspectorze,AutoLoadprzy starcie.- Ustawienia fabryczne:
DefaultSettingsFileiRestoreDefaults(„Przywróć domyślne”, też do cofnięcia). - Walidacja plików z opisem błędów (
OnValidationError); zapis stylu na serwerze (SaveToServer). - W IDE: dwuklik otwiera edytor; menu: przywróć domyślne, wczytaj/zapisz JSON.
Właściwości
| Właściwość | Opis |
|---|---|
| EditSubject | Co edytujemy: eskMapLayers (warstwy T3DMap) albo eskTerrain (opcje T3DTerrain); jedno TEditMap na formie wystarczy. |
| SettingsFile | Plik JSON z ustawieniami (edytor plików *.json w Object Inspectorze). |
| DefaultSettingsFile | Plik ustawień fabrycznych używany przez RestoreDefaults (puste = styl serwera). |
| AutoLoad | Wczytaj SettingsFile automatycznie po załadowaniu mapy. |
| UndoLimit | Liczba kroków cofania. |
| ServerStyleName | Nazwa stylu przy zapisie na serwerze. |
| Timeout | Limit czasu operacji sieciowych (ms). |
Zdarzenia
| Zdarzenie | Opis |
|---|---|
| OnChange | Każda zmiana (także cofnięcie). |
| OnRestoreDefaults | Po przywróceniu ustawień domyślnych. |
| OnValidationError | Plik / JSON odrzucony – lista błędów. |
| OnLoaded, OnSaved | Wczytano / zapisano ustawienia. |
Metody
| Metoda | Opis |
|---|---|
| SetColor, SetOpacity, SetWidth, SetVisible | Zmiana jednej warstwy. |
| SetCategoryColor, SetCategoryVisible | Zmiana całej kategorii. |
| Undo, Redo, CanUndo, CanRedo | Historia zmian. |
| RestoreDefaults, IsDefault | Ustawienia fabryczne. |
| SaveToFile, LoadFromFile, SaveToJSON, LoadFromJSON | Zapis i odczyt JSON. |
| SaveToServer, LoadFromServer | Styl na serwerze map. |
| ShowEditor, ShowOpenDialog, ShowSaveDialog | Okna dialogowe. |
Przykłady
Zmiany z kodu
// T3DMapVCL1.EditMap := EditMap1 (łączy się samo w czasie projektowania)
EditMap1.SettingsFile := 'map-settings.json';
EditMap1.AutoLoad := True; // wczytaj przy starcie
EditMap1.SetColor('water', '#1a3a6b');
EditMap1.BeginUpdate; // jeden krok cofania
try
EditMap1.SetColor('road_trunk_primary', '#ff9800');
EditMap1.SetWidth('road_trunk_primary', 6);
EditMap1.SetOpacity('road_trunk_primary', 0.9);
finally
EditMap1.EndUpdate;
end;
EditMap1.SetCategoryVisible('etykiety', False);
EditMap1.Undo;
EditMap1.RestoreDefaults; // „Przywróć domyślne” – też da się cofnąć
EditMap1.SaveToFile('map-settings.json');
EditMap1.ShowEditor; // okno: drzewo, kolor, przezroczystość, grubośćWalidacja pliku
procedure TForm1.EditMap1ValidationError(Sender: TObject; const Source: string;
Errors: TStrings);
begin
Memo1.Lines.Add('Plik ustawień odrzucony (' + Source + '):');
Memo1.Lines.AddStrings(Errors); // np. "layers.water.color: not a colour"
end;Pełna lista API
Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia TEditMap (także dziedziczone), właściwości publiczne i metody publiczne.
Właściwości opublikowane (7)
| Właściwość | Typ | Domyślnie | Opis |
|---|---|---|---|
SettingsFile | string | Plik JSON ustawień wczytywany przy starcie (AutoLoad) | |
DefaultSettingsFile | string | Własny plik domyślny dla RestoreDefaults | |
AutoLoad | Boolean | True | Wczytaj SettingsFile przy starcie |
ServerStyleName | string | Nazwa stylu zapisanego na serwerze (Style = m3sServerStyle) | |
UndoLimit | Integer | 100 | Liczba kroków cofania |
Timeout | Integer | 15000 | Limit czasu wywołań serwera (ms) |
EditSubject | TMapEditSubjectKind | eskMapLayers |
Zdarzenia (7)
| Zdarzenie | Typ | Opis |
|---|---|---|
OnChange | TMapEditChangeEvent | Każda zmiana ustawień (warstwa, właściwość) |
OnRestoreDefaults | TNotifyEvent | Przywrócono domyślne |
OnValidationError | TMapEditValidationEvent | Błąd walidacji JSON / pliku |
OnLoaded | TMapEditFileEvent | Wczytano ustawienia (plik / serwer) |
OnSaved | TMapEditSavedEvent | Zapisano (plik / serwer) |
OnSubjectChanged | TNotifyEvent | |
OnTerrainOptionChanged | TMapEditTerrainOptionEvent |
Właściwości publiczne – tylko w kodzie (7)
| Właściwość | Typ | Opis |
|---|---|---|
Subjects | TMapEditSubjectKinds | |
Settings | TMapStyleSettings | Bieżące ustawienia warstw |
LastErrors | TStringList | Błędy ostatniej walidacji |
Modified | Boolean | Zmiany od ostatniego zapisu / wczytania |
ServerPassword | string | Hasło API stylów (tylko w kodzie, nie zapisywane) |
ServerURL | string | URL API stylów (tylko w kodzie) |
BaseStyleURL | string | Styl bazowy łączony z ustawieniami przy SaveToServer |
Metody publiczne (52)
| Metoda | Opis |
|---|---|
procedure AttachStyleTarget(const Target: IMapStyleTarget) | Wewnętrzne: rejestracja mapy (IMapStyleSource) |
procedure DetachStyleTarget(const Target: IMapStyleTarget) | Wewnętrzne: wyrejestrowanie mapy |
function CurrentChangesJSON: string | Bieżące zmiany jako JSON |
function CurrentChangesJSONFor(Kind: TMapEditSubjectKind): string | |
function CurrentTerrainOptionsJSON: string | |
function ActiveSubject: TMapEditSubjectKind | |
function SubjectDescription: string | |
function TargetCount: Integer | |
function TargetKind(Index: Integer): TMapEditSubjectKind | |
function TargetName(Index: Integer): string | |
procedure SetTerrainOption(const Prop, ValueJSON: string) | |
function GetTerrainOption(const Prop: string): string | |
procedure ClearTerrainOptions | |
procedure SetTerrainContourLines(Visible: Boolean) | |
procedure SetTerrainElevationLabels(Visible: Boolean) | |
procedure SetTerrainHillshade(Visible: Boolean) | |
procedure SetTerrainObjectElevation(Visible: Boolean) | |
procedure SetTerrainContourColor(const CSSColor: string) | |
procedure SetTerrainContourStyle(const IntervalM, WidthPx: Double) | |
procedure EnsureAutoLoaded | Wykonuje AutoLoad teraz |
procedure BeginUpdate | Grupuje zmiany w jeden krok cofania |
procedure EndUpdate | Kończy grupę zmian |
procedure SetColor(const LayerId, CSSColor: string) | Kolor warstwy (CSS) |
procedure SetPaintColor(const LayerId, Prop, CSSColor: string) | Kolor dowolnej właściwości paint |
procedure SetOpacity(const LayerId: string; const Value: Double) | Przezroczystość warstwy 0..1 |
procedure SetVisible(const LayerId: string; Value: Boolean) | Widoczność warstwy |
procedure SetWidth(const LayerId: string; const Value: Double) | Grubość linii warstwy |
procedure SetZoomStops(const LayerId, Prop: string; const Stops: TMapZoomStops) | Wartości zależne od zoomu |
procedure SetValueJSON(const LayerId: string; Section: TMapStyleSection; const Prop, ValueJSON: string) | Dowolna wartość paint/layout jako JSON |
procedure SetCategoryColor(const Category, CSSColor: string) | Jeden kolor dla kategorii warstw (np. water) |
procedure SetCategoryVisible(const Category: string; Value: Boolean) | Widoczność kategorii warstw |
function GetColor(const LayerId: string): string | Odczyt koloru |
function GetOpacity(const LayerId: string): Double | Odczyt przezroczystości |
function GetVisible(const LayerId: string): Boolean | Odczyt widoczności |
function GetWidth(const LayerId: string): Double | Odczyt grubości |
function GetZoomStops(const LayerId, Prop: string): TMapZoomStops | Odczyt wartości zależnych od zoomu |
function GetValueJSON(const LayerId: string; Section: TMapStyleSection; const Prop: string): string | Odczyt wartości jako JSON |
function CanUndo: Boolean | Czy można cofnąć |
function CanRedo: Boolean | Czy można ponowić |
function Undo: Boolean | Cofnij |
function Redo: Boolean | Ponów |
procedure RestoreDefaults | Przywraca domyślne (DefaultSettingsFile lub fabryczne); można cofnąć |
function IsDefault: Boolean | Czy ustawienia są domyślne |
function LoadFromJSON(const JSONText: string; const Source: string = 'json'): Boolean | Waliduje i stosuje JSON ustawień |
function SaveToJSON(Indent: Integer = 2): string | Ustawienia jako JSON |
function LoadFromFile(const FileName: string): Boolean | Wczytuje plik JSON |
function SaveToFile(const FileName: string): Boolean | Zapisuje plik JSON |
function ShowOpenDialog: Boolean | Okno otwierania pliku *.json |
function ShowSaveDialog: Boolean | Okno zapisu pliku *.json |
procedure ShowEditor | Okno edytora (drzewo warstw, kolory, cofanie) |
procedure SaveToServer(const Name: string; const Password: string = '') | Zapisuje styl na serwerze map pod nazwą (asynchronicznie, OnSaved) |
procedure LoadFromServer(const Name: string) | Wczytuje styl z serwera (OnLoaded) |
Pełny opis wszystkich właściwości: dokumentacja komponentów map.