Komponent niewidoczny na palecie „Maps”. Upuść go na formę z T3DMapVCL lub T3DMapFMX – AutoLinkComponents łączy właściwości Map (i opcjonalnie EditMap), a teren włącza się sam. Mapa 3D wznosi się według numerycznego modelu terenu (DEM, MapLibre raster-dem + setTerrain), a „Pokaż wysokości” (ShowElevation) pokazuje wysokość n.p.m. pod kursorem, zgłasza ją po kliknięciu w OnElevation i pozwala opisać szczyty etykietami (ShowElevationSpots). Dane: Mapterhorn planet.pmtiles (cały świat, zoom 0–12, kodowanie Terrarium) z serwera https://mapa.imetroll.com/terrain/planet.pmtiles. Ustawienia trafiają do zagnieżdżonej właściwości Map.Terrain, która działa też bez komponentu.
Moduł:MapCommon.Terrain · Klasa bazowa:TComponent · Platformy: VCL + FMX
Tatry: T3DTerrain powiązany z T3DMapVCL (styl m3sSatelliteHybrid, mm3D, Pitch 76°), Exaggeration = 2,0, ShowElevation = True, SourceURL = pmtiles://https://mapa.imetroll.com/terrain/planet.pmtiles – etykiety ShowElevationSpots (Rysy, Kasprowy Wierch, Giewont) z wysokościami odczytanymi z planet.pmtiles. Podgląd poglądowy (nie zrzut z Delphi) – prawdziwa strona mapy komponentu w ramce imitującej formę.
Demo na żywo
Interaktywna strona mapy komponentu: teren z planet.pmtiles, przełączniki Exaggeration / etykiety / poziomnice / hillshade / wysokości obiektów / „Pokaż wysokości”, przeloty Tatry–Alpy–Himalaje, klik = OnElevation / OnObjectElevation.
Prawdziwa rzeźba terenu dla całego świata – Mapterhorn planet.pmtiles (zoom 0–12), domyślne źródło MAP_DEM_DEFAULT_URL.
Auto-link: Map (T3DMapVCL/FMX albo T3DTerrainVCL/FMX) i EditMap z formy; po powiązaniu teren włącza się automatycznie.
Widok samodzielny: T3DTerrainVCL / T3DTerrainFMX – mapa 3D z terenem bez osobnego T3DMap*; EditMap może się do niej podłączyć.
Etykiety wysokości (ShowElevationLabels) i poziomnice (ShowContourLines) niezależnie: tylko etykiety, tylko linie, obie albo żadna; ShowHillshade wyróżnia stoki.
Budynki i POI na DEM: ShowObjectElevation + OnObjectElevation → teren / wysokość obiektu / dach m n.p.m.
Jedno TEditMap na formie: EditSubject = warstwy mapy lub teren; SetTerrainContourLines / SetTerrainElevationLabels / …
PMTiles JS doklejane automatycznie dla pmtiles://; też XYZ (PNG/WebP), mteTerrarium / mteMapbox.
Działa z m3sVector, m3sSatelliteHybrid, stylem terenu i stylami z serwera – VCL i FMX.
Źródło planet.pmtiles. Archiwum jest zweryfikowane (MD5 zgodne) i udostępnione z CORS oraz zapytaniami Range pod adresem https://mapa.imetroll.com/terrain/planet.pmtiles. W SourceURL podaje się je z protokołem pmtiles, bez /{z}/{x}/{y}: pmtiles://https://mapa.imetroll.com/terrain/planet.pmtiles (to wartość domyślna).
Szczegółowość. planet.pmtiles ma kafle do zoomu 12 (WebP 512 px); przy większym powiększeniu MapLibre rozciąga kafle z12, więc odczyt jest przybliżony (np. Rysy ok. 2490 m zamiast 2499 m). Ścieżki i stoki w pełnej rozdzielczości wymagają regionalnych archiwów Mapterhorn 6-x-y.pmtiles.
TileBuffer wstępnie pobiera pierścień kafli dla źródeł http(s) XYZ; dla pmtiles:// ustaw 0 – MapLibre i tak pobiera potrzebne fragmenty archiwum.
Kafle są w formacie WebP – obsługują go WebView2 (VCL, FMX na Windows), Android WebView oraz WKWebView (iOS 14+, macOS 11+).
Właściwości
Właściwość
Opis
Map
Mapa 3D (T3DMapVCL/FMX lub T3DTerrainVCL/FMX); łączona automatycznie.
EditMap
Opcjonalny TEditMap z tej samej formy; łączony automatycznie.
Źródło DEM; domyślnie pmtiles://https://mapa.imetroll.com/terrain/planet.pmtiles.
Encoding
mteTerrarium (planet.pmtiles) / mteMapbox.
ShowElevation
„Pokaż wysokości” – odczyt m n.p.m. pod kursorem i po kliknięciu (domyślnie True).
ShowElevationLabels
Etykiety „▲ N m n.p.m.” na mapie (niezależnie od poziomnic).
ShowContourLines
Poziomnice / linie wysokości (niezależnie od etykiet).
ShowHillshade
Cieniowanie stoków (wyróżnienie wzgórz).
ShowObjectElevation
Budynek/POI: teren + wysokość obiektu + dach m n.p.m.
ContourIntervalM, ContourColor, ContourWidth
Gęstość i wygląd poziomnic.
TileBuffer
Wstępne pobieranie kafli wokół widoku (źródła XYZ); dla pmtiles:// – 0.
Zdarzenia
Zdarzenie
Opis
OnElevation
Klik przy ShowElevation: Lat, Lon, metry n.p.m., Valid.
OnObjectElevation
Klik przy ShowObjectElevation: Lat, Lon, GroundMeters, ObjectHeight, TopMeters, ObjectKind, ObjectName, Valid.
Metody
Metoda
Opis
ApplyToMap, ClearFromMap
Przekazanie ustawień do Map.Terrain / wyłączenie terenu na mapie.
ShowElevationSpots, ClearElevationSpots
Etykiety wysokości w punktach (Lats, Lons, Names) / usunięcie etykiet.
QueryElevation
Wysokość w punkcie z kodu (callback, JSON {"meters": …}).
DetectLinkedComponents
Ponowne wyszukanie mapy 3D i TEditMap na formie.
Przykłady
T3DTerrain na formie
// T3DTerrain1 upuszczony na formę z T3DMapVCL / T3DMapFMX:// AutoLinkComponents łączy Map (i EditMap), teren włącza się sam.procedure TForm1.FormCreate(Sender: TObject);
begin
Terrain1.Map := Map3D; // albo zostaw puste - auto-link z formy
Terrain1.Exaggeration := 1.5; // 1 = rzeczywista wysokość
Terrain1.ShowElevation := True; // „Pokaż wysokości”
Terrain1.TileBuffer := 0; // pmtiles:// - bez wstępnego pobierania kafli
Terrain1.OnElevation := Terrain1Elevation;
// SourceURL domyślnie = MAP_DEM_DEFAULT_URL:// pmtiles://https://mapa.imetroll.com/terrain/planet.pmtiles
Map3D.Mode := mm3D;
Map3D.Pitch3D := 70;
end;
Wysokość po kliknięciu (OnElevation)
procedure TForm1.Terrain1Elevation(Sender: TObject; const Lat, Lon, Meters: Double; Valid: Boolean);
beginif Valid then
Label1.Caption := Format('%.5f, %.5f: %.0f m n.p.m.', [Lat, Lon, Meters])
else
Label1.Caption := 'Brak danych DEM w tym miejscu (kafel jeszcze się wczytuje)';
end;
Etykiety szczytów i odczyt z kodu
// etykiety szczytów z wysokością odczytaną z DEM
Terrain1.ShowElevationSpots([49.1795, 49.2319, 49.2510], [20.0881, 19.9817, 19.9338],
['Rysy', 'Kasprowy Wierch', 'Giewont']);
// wysokość z kodu - odpowiedź JSON {"meters": ...}
Terrain1.QueryElevation(49.2319, 19.9817,
procedure(Ok: Boolean; const DataJSON, ErrorText: string)
beginif Ok then Memo1.Lines.Add('Kasprowy Wierch: ' + DataJSON);
end);
Terrain1.ClearElevationSpots;
Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia T3DTerrain (także dziedziczone), właściwości publiczne i metody publiczne.