Delphi, C++ Builder & .NET Teil von sgcUI

sgcMaps, native Karten für Delphi, C++ Builder & .NET

Bringe eine echte Karte in deine Anwendung, ohne Browser-Steuerelement und ohne eine Zeile JavaScript. sgcMaps zeichnet Raster- und Vektorkacheln selbst, zeigt Tausende geclusterte Marker, Routen und Zonen, geocodiert Adressen und arbeitet mit lokalen Kacheln und einem Offline-Router auch ohne Netz weiter.

VCL, FireMonkey, Lazarus, WinFormsKein Browser-Steuerelement, kein JavaScriptKostenlose .NET-Community-EditionEnthalten in sgcUI Enterprise
TsgcVCLMap zeigt das Zentrum von Madrid aus Vektorkacheln mit roten und blauen Standortmarkern

Alles, was eine Kartenanwendung braucht

Dreizehn Features, jedes mit der echten API und dem Hilfethema dahinter.

Kacheln und Kartendaten

Das Kartensteuerelement zeichnet jede Kachel selbst, von einem Kachelserver, einer Vektorquelle oder Dateien auf der Festplatte.

Eine echte Karte in deinem Formular, ohne Browser darin

Kacheln und Kartendaten

Eine echte Karte in deinem Formular, ohne Browser darin

Die meisten Kartenkomponenten kapseln eine Webansicht und eine JavaScript-Bibliothek, sodass deine Desktopanwendung am Ende einen Browser mitliefert. sgcMaps nicht. TsgcVCLMap und TsgcFMXMap laden, cachen und zeichnen die Kacheln auf ihrer eigenen Zeichenfläche, verarbeiten Zoom per Mausrad und Verschieben per Ziehen und lösen normale Delphi-Ereignisse aus. Deine Karte ist ein natives Steuerelement wie jedes andere: Sie dockt an, folgt dem Theme des Formulars und lässt sich wie der Rest deines Codes debuggen. Es gibt keinen zusätzlichen Prozess auszuliefern oder abzusichern, und die Karte verhält sich auf jedem Rechner, auf dem deine Anwendung läuft, gleich.

  • Die Sammlung Layers enthält ein oder mehrere TsgcMapLayer-Elemente, jedes mit eigenem TileSourceType
  • TsgcFMXMap läuft ab Delphi XE6 unter Windows, macOS, iOS und Android
  • Ein Lazarus-LCL-Steuerelement zeigt Kacheln von der Festplatte
  • In .NET teilen sich SgcMapControl für WinForms und die Headless-MapView eine Engine
  • Rechts nach links für Arabisch und Hebräisch: Zoom-Schaltflächen, Ebenenumschalter, Kompass, Maßstabsleiste und Quellenangabe wechseln auf die gegenüberliegende Seite, während die Karte ihre geografische Ausrichtung behält
Hilfethema lesen
Einen Kachelanbieter mit einer Eigenschaft wählen

Kacheln und Kartendaten

Einen Kachelanbieter mit einer Eigenschaft wählen

Eine Basiskarte zu wählen sollte nicht bedeuten, die Dokumentation von Kachelservern zu lesen. Setze Provider an einer Ebene und rufe sgcMapApplyProvider auf: Die Ebene erhält die URL-Vorlage, die maximale Zoomstufe und den Quellenhinweis dieses Anbieters. OpenStreetMap, OpenTopoMap, Esri World Imagery und Esri World Street funktionieren ohne Schlüssel. MapTiler, Thunderforest und Stadia brauchen deinen eigenen API-Schlüssel. Dein eigener Kachelserver ist nur eine URL-Vorlage entfernt. Jede Ebene hat ihren eigenen Anbieter, sodass eine Satellitenebene und eine Straßenebene in derselben Karte liegen können und der Nutzer direkt auf der Karte zwischen ihnen wechselt.

  • Ohne Schlüssel: mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreet
  • Mit deinem Schlüssel: mtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmooth
  • mtpCustom mit URLTemplate liest jeden {z}/{x}/{y}-Server
  • Der Quellenhinweis des Anbieters wird für dich auf der Karte gezeichnet
  • ShowLayerSwitcher setzt eine Ebenenschaltfläche auf die Karte
Hilfethema lesen
Vektorkacheln, die bei jeder Größe scharf bleiben

Kacheln und Kartendaten

Vektorkacheln, die bei jeder Größe scharf bleiben

Rasterkacheln werden beim Skalieren unscharf, und jede Stiländerung bedeutet neue Bilder vom Server. Mit Vektorkacheln erhält das Steuerelement die Geometrie und zeichnet Straßen, Gewässer, Gebäude und Beschriftungen selbst, sodass Text auf hochauflösenden Bildschirmen und in exportierten Bildern scharf bleibt. Richte eine Ebene auf einen Mapbox-Vector-Tile-Server und lasse VectorStyleFile leer, um den eingebauten Stil zu nutzen, oder lade eine MapLibre- oder Mapbox-GL-Stildatei, die zu deiner Marke passt. Vektorebenen funktionieren im VCL- und im FireMonkey-Steuerelement gleichermaßen.

  • mtsVectorHTTP liest einen Vektorkachelserver, ab Delphi XE2
  • mtsVectorMBTiles liest eine lokale Vektor-MBTiles-Datei (Offline-Paket)
  • TsgcMapVectorStyle lädt einen Stil mit LoadFromFile oder LoadFromJSON
  • Dekodierung und Zeichnen liegen in TsgcMapTileSource_MVT, in reinem Delphi-Code
Hilfethema lesen

Kacheln und Kartendaten Nur Registered

Weiterarbeiten, wenn das Netz weg ist

Ein Servicetechniker im Keller, ein Schiff auf See oder ein Hallennetz kann sich nicht auf einen Kachelserver verlassen. sgcMaps liest Kacheln von der Festplatte genauso, wie es sie aus dem Web liest. Gib einer Ebene einen CacheFolder, und jede geholte Kachel bleibt für den nächsten Lauf erhalten. Für ein vollständiges Offline-Paket holt TsgcMapTileDownloader vorab ein Gebiet und einen Zoombereich in einen Ordner oder eine MBTiles-Datei.

  • mtsFolder liest einen z/x/y-Ordner mit PNG- oder JPEG-Kacheln
  • mtsMBTiles liest eine Raster-MBTiles-Datei, ab Delphi XE7 (FireDAC SQLite)
  • CountTiles nennt die Größe eines Downloads vor dem Start; DelayMS und OnProgress halten ihn rücksichtsvoll und sichtbar
  • Massendownloads müssen die Bedingungen des Anbieters beachten: OpenStreetMap-Kacheln sind nur für die interaktive Ansicht gedacht

Community liest z/x/y-Kachelordner und behält den CacheFolder pro Ebene. Der Kachel-Downloader und MBTiles-Dateien gehören zum Offline-Paket.

Hilfethema lesen

Marker, Formen und Geometrie

Bringe deine eigenen Daten auf die Karte, halte sie bei jeder Zoomstufe lesbar und erledige die Mathematik dahinter.

Marker, Formen und Geometrie

Tausende Marker, trotzdem lesbar

Eine Fahrzeugflotte, ein Filialnetz oder ein Sensorraster wird schnell zu einer Wolke überlappender Pins. Schalte das Clustering ein, und nahe beieinander liegende Marker verschmelzen zu einer nummerierten Blase, die sich beim Hineinzoomen wieder aufteilt und bei jeder Zoomstufe neu berechnet wird. Jeder Marker bringt sein eigenes Popup, seinen Tooltip und sein Symbol mit, und Klicks, Ziehen und Clusterklicks kommen als Ereignisse an, sodass die Karte Teil deines Ablaufs wird statt eines Bildes. Marker lassen sich in einer Schleife aus deinen Daten hinzufügen oder aus GeoJSON-, GPX- und KML-Dateien importieren, und ClearMarkers setzt sie mit einem Aufruf zurück.

  • MarkerOptions.Clustering mit GridSize, MinClusterSize und ZoomOnClick
  • PopupText, TooltipText und IconBitmap pro Marker
  • Die Ereignisse OnMarkerClick, OnClusterClick und OnMarkerDragEnd
  • BeginUpdate und EndUpdate um Massenladevorgänge; FitToMarkers fasst alle in den Blick
  • MarkerAtScreen und ClusterAtScreen testen jedes Pixel
Hilfethema lesen
Routen, Zonen und Heatmaps auf einer Karte

Marker, Formen und Geometrie

Routen, Zonen und Heatmaps auf einer Karte

Die meisten Kartenansichten brauchen mehr als Pins: die geplante Lieferroute, das Gebiet, das ein Depot bedient, einen Radius um einen Kunden, die Herkunft der Bestellungen. sgcMaps zeichnet all das als Elemente des Kartenmodells, in denselben Koordinaten wie deine Marker. Formen lassen sich editierbar machen, sodass ein Nutzer die Eckpunkte einer Zone mit der Maus ziehen kann und dein Code erfährt, wann die Bearbeitung endet. Beschriftungen setzen Text an eine Koordinate, mit eigener Schrift, Farbe und eigenem Hintergrund, sodass Zonennamen und Routennummern an der Karte haften.

  • AddPolyline mit Dashed- und Geodesic-Linien
  • AddPolygon mit AddHole, dazu AddRectangle, AddCircle (RadiusMeters) und AddLabel
  • Formen mit Editable melden Änderungen über OnShapeEdited
  • TsgcMapHeatmap nimmt gewichtete Punkte mit AddPoint und eine MaxIntensity
Hilfethema lesen

Marker, Formen und Geometrie

Die Geomathematik ist schon geschrieben

Liegt dieses Fahrzeug in der Zone? Wie weit ist das nächste Depot entfernt? Welcher Punkt der Route liegt dem Kunden am nächsten? Diese Fragen tauchen in jeder Kartenanwendung auf und sind in Polnähe oder über große Distanzen leicht falsch zu beantworten. Die Geometrie-Unit beantwortet sie auf der WGS84-Kugel mit einfachen Funktionen, die du auch ganz ohne Karte aus einem Dienst aufrufen kannst. Die Funktionen nehmen einfache TsgcMapCoord-Records, und sgcMapLatLonToPixel und sgcMapPixelToLatLon rechnen zwischen Bildschirm- und Weltkoordinaten um, wenn du eigene Overlays zeichnest.

  • sgcMapDistance in Metern, sgcMapInitialBearing und sgcMapDestinationPoint
  • sgcMapPointInPolygon und sgcMapPointInPolygonWithHoles für Geofences
  • sgcMapNearestPointOnPolyline rastet eine Position auf eine Route ein
  • sgcMapGeodesicInterpolate und sgcMapSimplify für glatte, leichte Linien
Hilfethema lesen

Suche und Routing

Finde Adressen und plane Routen mit Online-Anbietern oder vollständig offline ohne API-Schlüssel.

Suche und Routing

Geocoding, Wegbeschreibungen und Orte hinter einer API

Jeder Geocoding- und Routing-Anbieter hat sein eigenes REST-Format, eigene Schlüssel und Eigenheiten. Die Dienstkomponenten verbergen sie: Du wählst einen Anbieter, setzt deinen Schlüssel, falls er einen braucht, und rufst dieselben Methoden auf, synchron oder asynchron. Der Wechsel von einem Anbieter zum anderen ist eine Eigenschaftsänderung, kein Neuschreiben, und die Ergebnisse kommen als Delphi-Objekte zurück, bereit für die Karte. Jede Komponente teilt die Basisklasse TsgcMapService, sodass ApiKey, UserAgent und LastError bei jedem Anbieter gleich funktionieren.

  • TsgcMapGeocoder: Nominatim, Google, HERE, Azure Maps, Mapbox, OpenRouteService und Geoapify
  • TsgcMapDirections: OSRM, OpenRouteService, Google Routes, HERE, Azure Maps, Mapbox und Geoapify
  • TsgcMapPlaces für Adressautovervollständigung, TsgcMapElevation und TsgcMapTimeZone
  • GeocodeAsync, GetRouteAsync und SuggestAsync halten die Oberfläche reaktionsfähig; Fehler kommen in OnError an
Hilfethema lesen

Suche und Routing Nur Registered

Routen und Adresssuche ohne Internet und ohne Schlüssel

Online-Routing versagt genau dort, wo Außendienst-Apps eingesetzt werden, und jede Anfrage kann Geld kosten. Der Offline-Router berechnet Auto-, Fahrrad- und Fußrouten auf dem Gerät aus einem Routengraphen, der einmal aus einem OpenStreetMap-Auszug gebaut wird. Der Offline-Geocoder sucht Ortsnamen und geocodiert einen Klick rückwärts aus einem GeoNames-Index in SQLite. Beide laufen ohne Netz, ohne Konto und ohne Gebühr pro Anfrage. Router und Geocoder sind nicht visuelle Komponenten, sodass ein Windows-Dienst oder ein Konsolenwerkzeug Routen- und Adressanfragen ohne Karte auf dem Bildschirm beantworten kann.

  • TsgcMapOfflineRouter beantwortet GetRoute aus einem Graphen, den TsgcMapRouteGraphBuilder aus .osm.pbf baut
  • sgcMapAddRouteToPolylines zeichnet das Ergebnis auf die Karte
  • TsgcMapOfflineGeocoder mit ReverseGeocode, über einen Index von TsgcMapGeoIndexBuilder
  • Kommandozeilen-Builder für den Graphen und den Index liegen im Ordner Tools

Community nutzt die Online-Dienste; der Offline-Router und der Offline-Geocoder gehören zum Offline-Paket.

Hilfethema lesen

Dateien, Rendering und Mobil

Tausche Geodaten mit anderen Werkzeugen aus, rendere Karten dort, wo es keinen Bildschirm gibt, und nimm die Karte aufs Smartphone mit.

Dateien, Rendering und Mobil

Öffne die Dateien, die deine Nutzer schon haben

Kunden schicken Tracks einer GPS-Uhr, in einem GIS-Werkzeug gezeichnete Zonen oder eine KML aus einem anderen System. sgcMaps liest und schreibt GeoJSON, GPX und KML direkt ins Kartenmodell, sodass ein Import ein Aufruf ist und ein Export ein weiterer. GPX-Tracks kommen mit ihren Statistiken und lassen sich nach Höhe einfärben, und ein Streaming-Reader durchläuft große OpenStreetMap-Auszüge, ohne sie in den Speicher zu laden. Exporte nutzen dieselben Funktionen umgekehrt, sodass vom Nutzer auf der Karte gezeichnete Zonen als GeoJSON oder KML gespeichert und in anderen GIS-Werkzeugen geöffnet werden können.

  • sgcMapLoadGeoJSONFile und sgcMapSaveGeoJSONFile, ab Delphi XE6
  • TsgcMapGPX mit TrackStats (TotalAscent, TotalDescent) und ColorByElevation
  • sgcMapLoadKMLFile und sgcMapSaveKMLFile
  • Der OpenStreetMap-Reader streamt .osm.pbf- und XML-Dateien über Ereignisse
  • sgcMapGeoJSONAsText liefert das GeoJSON der Karte als String
Hilfethema lesen
Kartenbilder auf einem Server rendern

Dateien, Rendering und Mobil

Kartenbilder auf einem Server rendern

Lieferscheine mit der Route, ein Tagesbericht mit den heutigen Vorfällen, ein Vorschaubild für eine Webseite: Viele Karten werden nie in einem Fenster gezeigt. Dasselbe Steuerelement rendert unsichtbar in ein PNG oder eine Bitmap, aus einer Konsolenanwendung oder einem Windows-Dienst. Du kannst prüfen, ob jede Kachel angekommen ist, bevor du das Bild verschickst, sodass ein langsamer Kachelserver nie als graues Quadrat in einem Kundendokument endet. Das serverseitige Rendering nutzt dieselben Ebenen, Marker und Formen wie das interaktive Steuerelement, sodass eine am Bildschirm entworfene Karte im PNG gleich aussieht.

  • SaveToPNG und SaveToPNGFile, ab Delphi 2009
  • RenderToBitmap und SaveToBMPFile für deine eigene Pipeline
  • LastRenderMissingTiles meldet Kacheln, die nicht verfügbar waren
  • In .NET läuft MapView.RenderToPng auch unter Linux
Hilfethema lesen

Dateien, Rendering und Mobil

Dieselbe Karte auf Desktop und Mobilgerät

Ein Disponent plant am Windows-Desktop, und der Fahrer folgt dem Plan auf dem Smartphone. TsgcFMXMap bringt dasselbe Modell, dieselben Ebenen, Marker, Formen und Dienste nach FireMonkey unter Windows, macOS, iOS und Android, sodass der Code, den du für die VCL-Karte geschrieben hast, übernommen werden kann. TsgcMapLocation liest die Position des Geräts, sodass die Karte auf den Nutzer zentrieren und ihm folgen kann. Der Kachel-Cache pro Ebene funktioniert auch mobil, sodass ein Smartphone die bereits geladenen Gebiete weiter anzeigt.

  • TsgcFMXMap ab Delphi XE6, mit denselben Sammlungen wie TsgcVCLMap
  • TsgcMapLocation unter Windows, Android, iOS und macOS
  • Die FMX-Demo zeigt Kacheln, Marker und Standort in einem Formular
  • Die Mindestversionen von Delphi pro Feature stehen im Installationsthema
Hilfethema lesen

Barrierefreiheit

UI Automation für Screenreader und Tastatur, ohne Einrichtung.

Barrierefreiheit

Eine Karte, die mit der Tastatur erreichbar ist und über UI Automation bereitgestellt wird

sgcMaps stellt die Karte über Microsoft UI Automation mit einer Textalternative, den Markierungen als Liste und den Ebenen als Liste bereit, wobei jede Ebene meldet, ob sie sichtbar ist. Die Markierungen sind mit der Tastatur erreichbar.

  • Pfeiltasten verschieben die Karte, die Plus- und Minustasten zoomen, und Pos1 kehrt zur Startansicht zurück
  • Bild auf und Bild ab wechseln zur vorherigen oder nächsten Markierung, Enter aktiviert die fokussierte Markierung, und Esc hebt den Markierungsfokus auf
  • Die Karte zeigt einen sichtbaren Fokusrahmen, solange sie den Fokus hat
  • Unter .NET ist sgcMaps ein WinForms-Steuerelement, daher ist die Karte unter WinForms barrierefrei

Barrierefreiheit ist in jeder Edition standardmäßig aktiv, auch in der kostenlosen Community-Edition, unter VCL in jeder Delphi- und C++Builder-Version von Delphi 7 bis Delphi 13, in FireMonkey unter Windows sowie unter WinForms. In Delphi und C++Builder legen AccessibleName und AccessibleDescription den Namen und die Beschreibung fest, die über UI Automation bereitgestellt werden, und unter .NET leisten der Standardname und der Standard-Hilfetext des jeweiligen Frameworks dasselbe. Siehe die Konformitätsberichte zur Barrierefreiheit. Das Kartenbild wird nur durch seine Mitte und den Zoom beschrieben, und der Karten-Renderer folgt nicht dem hohen Kontrast von Windows, weil das Kartenbild Kachelmaterial des Anbieters ist.

Hilfethema lesen

sgcMaps in Aktion erleben

sgcMaps in den sgcUI-Suite-Demos: vollständige Anwendungen, die offline mit integrierten Simulationsdaten laufen.

Wer mit sgcMaps baut

Außendienst und Logistik

Techniker und Fahrer brauchen die Karte dort, wo der Empfang schlecht ist. Bereite die Kacheln einer Region vorab vor, berechne Autorouten auf dem Gerät mit dem Offline-Router und finde Adressen mit dem Offline-Geocoder. Zurück im Büro zeichnet derselbe Code die geplanten Routen und Lieferzonen und rendert ein PNG jeder Route für den Lieferschein.

  • Funktioniert offline
  • Offline-Routing
  • Routen und Zonen
  • Kartenbilder
Demo OfflineServices ausführen

Asset- und Flottenverfolgung

Eine Leitstelle überwacht Hunderte Fahrzeuge, Maschinen oder Sensoren gleichzeitig. Das Clustering hält die Karte auf Länderebene lesbar und teilt sich auf Straßenebene in einzelne Pins auf. Eine Heatmap zeigt, wo sich Vorfälle häufen, Geofence-Prüfungen mit Punkt im Polygon lösen Alarme aus, und Marker-Klickereignisse öffnen den Datensatz des Assets in deinen eigenen Formularen.

  • Clustering
  • Heatmaps
  • Geometrie
  • Ereignisse
Demo MapFeatures ausführen

Leichtes GIS und Outdoor-Apps

Planungswerkzeuge, Sport-Apps und Vermessungssoftware leben von GPX-Tracks, KML-Ebenen und GeoJSON-Zonen. sgcMaps importiert und exportiert alle drei, zeigt Trackstatistiken und Höhenfarben und legt das Ergebnis auf eine topografische Basiskarte. Das FireMonkey-Steuerelement bringt dieselben Features auf ein Tablet oder Smartphone im Feld. Die Trackstatistik gibt den gesamten Anstieg und Abstieg einer Route auf einen Blick.

  • GeoJSON, GPX und KML
  • Topografische Kacheln
  • FireMonkey
Demo OfflineMap ausführen

A Map in a Few Lines

The same API in Delphi, C++ Builder and C#: OpenStreetMap tiles, three markers, a geodesic line and a radius, fitted to the markers and saved as PNG.

A VCL map built in code: a cached OpenStreetMap layer, markers, a geodesic line and a circle, then a PNG of the result.

uses
  SysUtils, Controls, Graphics, sgcMaps_Classes, sgcMaps_Providers,
  sgcMaps_Geometry, sgcMaps_VCL;

// OpenStreetMap with cached tiles, three capitals, a geodesic flight line
// and a 300 km radius, fitted to the markers and saved as PNG.
procedure BuildMap(aOwner: TWinControl);
var
  oMap: TsgcVCLMap;
  oLayer: TsgcMapLayer;
  oLine: TsgcMapPolyline;
begin
  oMap := TsgcVCLMap.Create(aOwner);
  oMap.Parent := aOwner;
  oMap.Align := alClient;

  oLayer := oMap.Layers.Add;
  oLayer.Name := 'OpenStreetMap';
  oLayer.Provider := mtpOpenStreetMap;
  sgcMapApplyProvider(oLayer);
  oLayer.CacheFolder := ExtractFilePath(ParamStr(0)) + 'tile_cache';

  oMap.AddMarker(48.8566, 2.3522, 'Paris', 'France');
  oMap.AddMarker(52.5200, 13.4050, 'Berlin', 'Germany');
  oMap.AddMarker(41.9028, 12.4964, 'Rome', 'Italy');
  oMap.MarkerOptions.Clustering.Enabled := True;

  oLine := oMap.AddPolyline;
  oLine.Geodesic := True;
  oLine.Dashed := True;
  oLine.Color := clRed;
  oLine.AddPoint(48.8566, 2.3522);
  oLine.AddPoint(52.5200, 13.4050);

  oMap.AddCircle(48.8566, 2.3522, 300000).FillOpacity := 0.15;
  oMap.FitToMarkers(40);
  oMap.AddLabel(50.7, 8, Format('Paris to Berlin: %.0f km',
    [sgcMapDistance(48.8566, 2.3522, 52.52, 13.405) / 1000]));
  oMap.SaveToPNG('europe.png', 1200, 800);
end;

Hilfethema lesen →

The same map in C++ Builder with the generated sgcMaps headers.

#include <vcl.h>
#include "sgcMaps_Classes.hpp"
#include "sgcMaps_Providers.hpp"
#include "sgcMaps_Geometry.hpp"
#include "sgcMaps_VCL.hpp"

// OpenStreetMap with cached tiles, three capitals, a geodesic flight line
// and a 300 km radius, fitted to the markers and saved as PNG.
void BuildMap(TWinControl *aOwner)
{
  TsgcVCLMap *oMap = new TsgcVCLMap(aOwner);
  oMap->Parent = aOwner;
  oMap->Align = alClient;

  TsgcMapLayer *oLayer = oMap->Layers->Add();
  oLayer->Name = "OpenStreetMap";
  oLayer->Provider = mtpOpenStreetMap;
  sgcMapApplyProvider(oLayer);
  oLayer->CacheFolder = ExtractFilePath(ParamStr(0)) + "tile_cache";

  oMap->AddMarker(48.8566, 2.3522, "Paris", "France");
  oMap->AddMarker(52.5200, 13.4050, "Berlin", "Germany");
  oMap->AddMarker(41.9028, 12.4964, "Rome", "Italy");
  oMap->MarkerOptions->Clustering->Enabled = true;

  TsgcMapPolyline *oLine = oMap->AddPolyline();
  oLine->Geodesic = true;
  oLine->Dashed = true;
  oLine->Color = clRed;
  oLine->AddPoint(48.8566, 2.3522);
  oLine->AddPoint(52.5200, 13.4050);

  oMap->AddCircle(48.8566, 2.3522, 300000)->FillOpacity = 0.15;
  oMap->FitToMarkers(40);
  int iKm = (int)(sgcMapDistance(48.8566, 2.3522, 52.52, 13.405) / 1000);
  oMap->AddLabel(50.7, 8, "Paris to Berlin: " + IntToStr(iKm) + " km");
  oMap->SaveToPNG("europe.png", 1200, 800, false);
}

Hilfethema lesen →

The headless MapView renders the same map to a PNG file, on Windows or Linux.

using System;
using System.IO;
using esegece.sgcMaps;
using esegece.sgcMaps.Rendering;

// OpenStreetMap with cached tiles, three capitals, a geodesic flight line
// and a 300 km radius, fitted to the markers and saved as PNG (no window).
public static class EuropeMap
{
    public static void Render()
    {
        var oMap = new MapView();

        Layer oLayer = oMap.Layers.Add();
        oLayer.Name = "OpenStreetMap";
        oLayer.Provider = TileProvider.OpenStreetMap;
        MapProviders.ApplyProvider(oLayer);
        oLayer.CacheFolder = Path.Combine(AppContext.BaseDirectory, "tile_cache");

        oMap.AddMarker(48.8566, 2.3522, "Paris", "France");
        oMap.AddMarker(52.5200, 13.4050, "Berlin", "Germany");
        oMap.AddMarker(41.9028, 12.4964, "Rome", "Italy");
        oMap.MarkerOptions.Clustering.Enabled = true;

        Polyline oLine = oMap.AddPolyline();
        oLine.Geodesic = true;
        oLine.Dashed = true;
        oLine.Color = MapColors.Red;
        oLine.AddPoint(48.8566, 2.3522);
        oLine.AddPoint(52.5200, 13.4050);

        oMap.AddCircle(48.8566, 2.3522, 300000).FillOpacity = 0.15;
        oMap.FitToMarkers(40);
        double vKm = MapGeometry.Distance(48.8566, 2.3522, 52.52, 13.405) / 1000;
        oMap.AddLabel(50.7, 8, $"Paris to Berlin: {vKm:F0} km");
        oMap.RenderToPng("europe.png", 1200, 800);
    }
}
dotnet add package esegece.sgcMaps.Rendering

Hilfethema lesen →

Die sgcMaps-Demos ausführen

Zu sgcMaps gehören sieben Delphi-Demos und drei .NET-Demos. Es gibt keine C++-Builder-Demoprojekte.

Nur Registered OfflineMap

Ordner-, MBTiles- und Online-Kacheln, Marker und Formen, dazu GeoJSON-, GPX- und KML-Import.

MapFeatures

Anbieter und API-Schlüssel, Marker-Clustering, Formbearbeitung, Heatmaps und Bildexport.

Services

Ortssuche, Geocoding, Wegbeschreibungen, Höhe, Zeitzonen und Gerätestandort mit den Online-Anbietern. Delphi XE8 und später.

Nur Registered OfflineServices

Baue einen GeoNames-Index und einen OpenStreetMap-Routengraphen, dann suche Orte und route Auto, Fahrrad oder Fußweg ohne Netz.

StaticRender

StaticRender

Ein Konsolenprogramm, das eine Karte ohne Fenster in eine PNG- oder BMP-Datei rendert.

FMX

Die FireMonkey-Karte mit Kacheln, Markern und Gerätestandort, für Windows, macOS, iOS und Android. Delphi XE6 und später.

VectorTiles

VectorTiles

Ein Vektorkachelserver, gezeichnet mit dem eingebauten Stil oder einer eigenen Stildatei, mit scharfen Beschriftungen bei jeder Zoomstufe.

WinFormsDemo

Das .NET-SgcMapControl in einem WinForms-Fenster mit Anbietern, Markern und Formen.

Nur Registered OfflineDemo

Das .NET-Offline-Paket: Offline-Kacheln, Routing und Geocoding aus lokalen Datendateien.

ConsoleRenderDemo

ConsoleRenderDemo

Eine .NET-Konsole, die eine Karte mit der Headless-MapView als PNG rendert, unter Windows oder Linux.

Kompilierte Demos

Sofort lauffähige Programme jedes sgcUI-Produkts, nichts zu installieren.

sgcUI_bin.zip herunterladen →

Wo sgcMaps enthalten ist

sgcMaps ist Teil von sgcUI Enterprise und wird auch einzeln verkauft. sgcMaps ist außerdem im All-Access-Bundle enthalten.

sgcMaps Einzelpaket

€149 / Entwickler, voller Quellcode, 1 Jahr Updates.

sgcMaps kaufen → Preise ansehen →

sgcUI Enterprise

Alle 14 sgcUI-Produkte, ab €699.

Enterprise ansehen →

Die kostenlose Community Edition (Delphi-Installer und NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community) hat jedes Feature außer dem Offline-Paket. Das Paket esegece.sgcMaps.Offline ist nur Registered. Ein Projekt referenziert entweder die Community- oder die Registered-Pakete, niemals beide.

FunktionCommunity (kostenlos)Registered
VCL-, FireMonkey- und WinForms-Kartensteuerelemente✓✓
Kachelanbieter, HTTP- und Vektorkachelserver✓✓
z/x/y-Kachelordner und der Kachel-Cache pro Ebene✓✓
Marker, Clustering, Formen, Beschriftungen und Heatmaps✓✓
Geometriefunktionen✓✓
GeoJSON-, GPX- und KML-Import und -Export✓✓
Online-Geocoding, Wegbeschreibungen, Orte, Höhe und Zeitzonen✓✓
Statisches Rendering als PNG✓✓
Kachel-Downloader für Offline-Pakete−✓
MBTiles-Dateien (Raster und Vektor)−✓
Offline-Router und Offline-Geocoder−✓

Unterstützte Frameworks und Plattformen

Komponenten in sgcMaps

TsgcVCLMap und TsgcFMXMap

Die Kartensteuerelemente für VCL und FireMonkey, dazu ein Lazarus-LCL-Steuerelement, das Kacheln von der Festplatte liest.

Modellsammlungen

Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels und Heatmaps, für jedes Framework gleich.

Online-Dienste

TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation und TsgcMapTimeZone.

Offline-Werkzeuge

TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder und TsgcMapTileDownloader.

TsgcMapLocation und Geometriehilfen

Gerätestandort sowie sgcMapDistance, Peilung, Zielpunkt, geodätische Interpolation, Punkt im Polygon und Linienvereinfachung.

.NET-Karten

SgcMapControl für WinForms und MapView, die Headless-Engine, die PNG rendert, auch unter Linux.

ZielKomponentePlattformen
Delphi 7 bis 13, VCLTsgcVCLMap und das ModellWin32, und Win64 ab XE2
Delphi XE6 bis 13, FireMonkeyTsgcFMXMapWindows, macOS, iOS und Android, Gerätestandort unter Windows, Android, iOS und macOS
C++ Builder 2007 bis 13TsgcVCLMap und das ModellGenerierte .hpp-Header und statische Bibliotheken
LazarusLCL-KartensteuerelementNur Kacheln von der Festplatte, Kacheln lassen sich nicht herunterladen
.NET 8, 9 und 10SgcMapControl, MapViewWinForms (net8.0-windows, net9.0-windows, net10.0-windows), headless PNG unter Windows und Linux

Häufig gestellte Fragen

Nein. Die Kacheln, Marker und Formen werden nativ vom Steuerelement gezeichnet, es gibt also keine Webansicht, keine JavaScript-Bibliothek und keine Browser-Runtime auszuliefern.

Nicht für OpenStreetMap, OpenTopoMap und die Esri-Kacheln, und nicht für den Offline-Router und den Offline-Geocoder. Die Kacheln von MapTiler, Thunderforest und Stadia sowie die kommerziellen Geocoding- und Routing-Anbieter brauchen deinen eigenen Schlüssel. Jeder Anbieter hat seine eigenen Nutzungsbedingungen, die deine Anwendung einhalten muss.

Ja. Kacheln können aus z/x/y-Ordnern, einem Cache pro Ebene oder MBTiles-Dateien kommen, Routen von TsgcMapOfflineRouter und die Adresssuche von TsgcMapOfflineGeocoder. MBTiles, der Kachel-Downloader sowie der Offline-Router und der Offline-Geocoder gehören zum Offline-Paket der Registered Edition.

GeoJSON, GPX und KML, für Import und Export, mit GPX-Trackstatistiken und Höhenfarben. Ein Streaming-Reader verarbeitet außerdem OpenStreetMap-.osm.pbf- und XML-Dateien, so wird der Offline-Routengraph gebaut. Siehe Dateiformate.

Das Modell und das VCL-Steuerelement funktionieren ab Delphi 7 und C++ Builder 2007. Manche Features haben eine höhere Mindestversion: PNG-Ausgabe und Kachelserver ab Delphi 2009, Vektorkacheln und der Offline-Router ab XE2, FireMonkey und GeoJSON ab XE6, MBTiles und der Offline-Geocoder ab XE7, Online-Dienste ab XE8.

Die Demoprojekte gibt es nur für Delphi, aber die Komponenten lassen sich in C++ Builder 2007 bis 13 installieren und funktionieren genauso. Der Tab C++ Builder im Codeabschnitt oben zeigt dieselbe Karte mit den generierten Headern.

Ja. Die Community Edition ist kostenlos für Privatpersonen und Organisationen mit weniger als 1 Mio. EUR Jahresumsatz und höchstens 5 Entwicklern. Sie hat jedes Feature außer dem Offline-Paket. Unter .NET heißen die Pakete esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community und esegece.sgcMaps.WinForms.Community. Größere Organisationen brauchen eine Registered-Lizenz.

sgcMaps Hilfe

3,000+Entwickler
20+Jahre
761+Komponenten
30+API-Integrationen
5Plattformen
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

sgcMaps heute testen

Die sgcUI-Testversion enthält sgcMaps mit dem Offline-Paket und jedes andere sgcUI-Produkt. Die .NET-Community-Edition ist kostenlos auf NuGet.