Komponenty Delphi pomoc
Start › Komponenty Delphi › TMapAreas

TMapAreas

Granice admin-0/1/2 (ShowAdministrative), style per poziom, SettingsFile/AutoSave, cache GeoJSON.

VCLFMXniewidoczny
▶ Zobacz na żywo – demo HTML

Opis

Komponent niewidoczny, który rysuje obszary z plików GeoJSON na mapie (kafelkowej i 3D). Wybór jest hierarchiczny: Cały świat → kontynenty → państwa. W Object Inspectorze kontynenty i państwa zaznaczasz w drzewie z polami wyboru.

Moduł: MapCommon.Areas · Klasa bazowa: TComponent · Platformy: VCL + FMX

TMapAreas – podgląd poglądowy
TMapAreas: kontury państw (Europa Środkowa), cienkie granice, bez regionów admin-1 — edytor drzewa w IDE. Podgląd poglądowy (nie zrzut z Delphi) – prawdziwa strona mapy komponentu w ramce imitującej formę.

Demo na żywo

Województwa Polski, kraje Europy Środkowej lub cały świat; podświetlenie, OnAreaClick, kolory na żywo.

▶ Otwórz demo HTML

Funkcje

Brak osobnego pliku Antarktydy – jest widoczna tylko przy WholeWorld.
Pliki pobierane są w częściach (chunked) do strony mapy i trzymane w pamięci podręcznej.

Pliki danych

Pliki GeoJSON z serwera https://mapa.imetroll.com/geojson/, dobierane według hierarchii:

WybórPlikZawartośćRozmiar
WholeWorld (mwdCountries)countries.geojson258 państw14,6 MB
WholeWorld (mwdProvinces)ne_10m_admin_1_states_provinces.geojsonregiony admin-1 świata40,7 MB
macEuropeeurope_full.geojsonpaństwa + regiony33,8 MB
macAfricaafrica_full.geojsonpaństwa + regiony21,5 MB
macAsiaasia_full.geojsonpaństwa + regiony53,8 MB
macNorthAmericanorth_america_full.geojsonpaństwa + regiony23,2 MB
macCentralAmericacentral_america_full.geojsonpaństwa + regiony3,9 MB
macSouthAmericasouth_america_full.geojsonpaństwa + regiony15,0 MB
macOceaniaoceania_full.geojsonpaństwa + regiony6,3 MB

Wersja danych: versiongeojson.json (sprawdzana przy CheckVersion = True).

Właściwości

WłaściwośćOpis
WholeWorld, WorldDetailCały świat; poziom szczegółów.
ContinentsZbiór kontynentów (edytor drzewa).
ShowAdministrative, AdminLevel, Admin2BaseURLJawne granice admin: malCountry / malAdmin1 / malAdmin2 (geoBoundaries CC BY 4.0). Polska + admin-1 = województwa.
CountryStyle, Admin1Style, Admin2StyleWypełnienie / obrys / grubość per poziom.
SettingsFile, AutoLoad, AutoSaveJSON map-areas-settings v1; AutoSave przy każdej zmianie; localStorage w stronie.
CountriesKody ISO-2 oddzielone przecinkami (edytor drzewa).
ShowCountryOutlines, ShowRegionsGranice państw, regiony wewnętrzne.
HierarchyStyleStyl obszarów z hierarchii (FillColor, FillOpacity, LineColor, LabelProperty…).
ItemsDodatkowe zestawy obszarów (własne pliki).
CacheFolder, UseCache, CheckVersionPamięć podręczna i wersja danych.
Timeout, FitOnLoad, ActiveLimit czasu pobierania, dopasowanie widoku, włączenie.

Zdarzenia

ZdarzenieOpis
OnAreaClickKliknięcie obszaru: kod ISO-2, nazwa, właściwości JSON.
OnAreaHoverNajechanie na obszar.
OnAreaLoadedZestaw wczytany i narysowany.
OnValidationErrorPlik GeoJSON odrzucony.

Metody

MetodaOpis
ShowCountry, FitToAreaPokaż państwo / dopasuj widok.
LoadFromFile, LoadFromURL, LoadFromStringWłasne dane.
BeginUpdate, EndUpdate, RefreshZmiany grupowe, przerysowanie.
ClearCache, ClearPamięć podręczna, usunięcie zestawów.

Przykłady

Świat, kontynenty, państwa

// cały świat – 258 państw
MapAreas1.WholeWorld := True;
MapAreas1.WorldDetail := mwdCountries;   // mwdProvinces = regiony admin-1

// wybrane kontynenty
MapAreas1.WholeWorld := False;
MapAreas1.Continents := [macEurope, macAfrica];
MapAreas1.ShowCountryOutlines := True;
MapAreas1.ShowRegions := True;           // regiony wewnątrz państw

// konkretne państwa (kontynent wynika z kodów ISO)
MapAreas1.BeginUpdate;
try
  MapAreas1.Continents := [];
  MapAreas1.Countries := 'PL,CZ,SK';
finally
  MapAreas1.EndUpdate;
end;
MapAreas1.ShowCountry('PL');             // filtr + przybliżenie

Zdarzenia i własne pliki

procedure TForm1.MapAreas1AreaClick(Sender: TObject; const SetId: string;
  const Lat, Lon: Double; const CountryISO2, FeatureName, PropertiesJSON: string);
begin
  Caption := FeatureName + ' (' + CountryISO2 + ')';
end;

// własny plik GeoJSON, np. strefy dostaw
Item := MapAreas1.LoadFromFile('C:\dane\strefy.geojson', 'Strefy dostaw');
Item.Style.FillColor := '#2e7d32';
Item.Style.FillOpacity := 0.2;
MapAreas1.FitToArea(Item);

Pełna lista API

Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia TMapAreas (także dziedziczone), właściwości publiczne i metody publiczne.

Właściwości opublikowane (25)

WłaściwośćTypDomyślnieOpis
ActiveBooleanTrueFalse = nic nie jest wczytywane ani pokazywane
EditPopupEnabledBooleanTrueRMB + long-press (~500 ms) otwierają edytor stylu obszaru; False wyłącza oba
EditTEditMapRaster
AutoLinkComponentsBooleanTrueAutomatycznie łącz pierwszy dostawcę wyszukiwania / TMapAreas / TEditMap z formy
WholeWorldBooleanFalseCały świat w jednym pliku (państwa lub admin-1)
WorldDetailTMapWorldDetailmwdCountriesmwdCountries / mwdAdmin1 dla WholeWorld
ContinentsTMapAreaContinents[]Kontynenty do wczytania (zestaw)
CountriesstringFiltr ISO w wybranych kontynentach (np. PL,DE,CZ)
ShowCountryOutlinesBooleanTrueObrysy państw / regionów admin-1 z plików kontynentów
ShowRegionsBooleanFalseWypełnienie regionów
HierarchyStyleTMapAreaStyleStyl hierarchii (wypełnienie, obrys, grubość, etykiety)
ShowAdministrativeBooleanFalseJawne granice administracyjne wybranych państw na poziomie AdminLevel
AdminLevelTMapAdminLevelmalCountrymalCountry / malAdmin1 (województwa, Natural Earth) / malAdmin2 (powiaty, geoBoundaries)
CountryStyleTMapAreaStyleStyl poziomu państw (wypełnienie, kolor obrysu, grubość)
Admin1StyleTMapAreaStyleStyl poziomu admin-1
Admin2StyleTMapAreaStyleStyl poziomu admin-2
SettingsFilestringPlik JSON ustawień (map-areas-settings v1)
AutoLoadBooleanTrueWczytaj SettingsFile przy otwarciu
AutoSaveBooleanFalseZapisuj SettingsFile po każdej zmianie
ItemsTMapAreaItemsWłasne pliki / URL / teksty GeoJSON (kolekcja ze stylem)
CacheFolderstringFolder cache GeoJSON ('' = folder danych aplikacji)
UseCacheBooleanTrueUżywaj cache plików
CheckVersionBooleanTruePorównuj versiongeojson.json z cache (raz na uruchomienie)
TimeoutInteger60000Limit czasu pobierania (ms)
FitOnLoadBooleanFalseDopasuj widok po wczytaniu

Zdarzenia (6)

ZdarzenieTypOpis
OnAreaClickTMapAreaEventKliknięcie obszaru (SetId, Lat, Lon, właściwości)
OnAreaHoverTMapAreaEventNajechanie na obszar
OnAreaLoadedTMapAreaLoadedEventZestaw wczytany (liczba obiektów / błąd)
OnValidationErrorTMapAreaValidationEventBłąd walidacji GeoJSON / ustawień
OnSettingsLoadedTNotifyEventWczytano plik ustawień
OnSettingsSavedTNotifyEventZapisano plik ustawień

Właściwości publiczne – tylko w kodzie (3)

WłaściwośćTypOpis
BaseURLstringAdres katalogu GeoJSON (tylko w kodzie)
Admin2BaseURLstringSzablon URL ADM2 ({ISO}/{iso}); domyślnie geoBoundaries (CC BY 4.0)
ServerVersionstringWersja danych na serwerze

Metody publiczne (22)

MetodaOpis
procedure AttachAreasTarget(const Target: IMapAreasTarget)Wewnętrzne: rejestracja mapy
procedure DetachAreasTarget(const Target: IMapAreasTarget)Wewnętrzne: wyrejestrowanie mapy
procedure ReplayAreasTo(const Target: IMapAreasTarget)Wewnętrzne: odtworzenie zestawów na mapie
procedure BeginUpdateWstrzymuje przebudowę do EndUpdate
procedure EndUpdatePrzebudowuje po zmianach
procedure RefreshPonownie wczytuje hierarchię i pliki
function LoadFromFile(const FileName: string; const ACaption: string = ''): TMapAreaItemDodaje własny plik GeoJSON
function LoadFromURL(const URL: string; const ACaption: string = ''): TMapAreaItemDodaje GeoJSON z URL
function LoadFromString(const GeoJSON: string; const ACaption: string = ''): TMapAreaItemDodaje GeoJSON z tekstu
procedure ClearUsuwa własne pliki
procedure FitToArea(const SetId: string; PaddingPx: Integer = 30; const MaxZoom: Double = 12)Dopasowuje widok do zestawu
procedure ShowCountry(const ISO: string)Wybiera państwo i przybliża
function HierarchySetIds: TArray<string>Identyfikatory zestawów hierarchii
function HierarchyState(const SetId: string): TMapAreaStateStan zestawu (pobieranie / gotowy / błąd)
procedure ClearCacheUsuwa pliki z cache
function SaveToJSON(Indent: Integer = 2): stringUstawienia jako JSON (map-areas-settings v1)
function LoadFromJSON(const JSONText: string): BooleanStosuje ustawienia z JSON
function SaveSettingsToFile(const FileName: string = ''): BooleanZapisuje ustawienia do pliku
function LoadSettingsFromFile(const FileName: string = ''): BooleanWczytuje ustawienia z pliku
procedure EnsureAutoLoadedWykonuje AutoLoad teraz
procedure ShowAdministrativeCountry(const ISO: string; Level: TMapAdminLevel = malAdmin1)Pokazuje państwo z podziałem (np. PL + województwa)
function GetAreaFileText(const FileName: string; out Text, ErrorMessage: string): Boolean

Pełny opis wszystkich właściwości: dokumentacja komponentów map.

Zobacz też