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, fügt Ebenen von WMS- und WMTS-Servern hinzu, 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, WinForms, WPF, AvaloniaKein Browser-Steuerelement, kein JavaScriptKostenlose .NET-Community-EditionEnthalten in sgcUI Enterprise
Überall nativVCL-, FireMonkey-, Lazarus-, WinForms-, WPF- und Avalonia-Steuerelemente, die die Karte selbst zeichnen.
Deine Daten auf der KarteGeclusterte Marker, Routen, Zonen, Kreise, Beschriftungen und Heatmaps aus Code oder Dateien.
Funktioniert offlineKacheln von der Festplatte, ein Offline-Router und ein Offline-Geocoder, kein API-Schlüssel nötig.
Karten als BilderPNG-Dateien aus einer Konsole, einem Dienst oder einem Linux-.NET-Prozess rendern.
WICHTIGE FEATURES
Alles, was eine Kartenanwendung braucht
Achtzehn Features, jedes mit der echten API und dem Hilfethema dahinter.
Kacheln und Kartendaten
Das Kartensteuerelement zeichnet jede Kachel selbst, von einem Kachelserver, einem WMS- oder WMTS-Dienst, einer Vektorquelle oder Dateien auf der Festplatte.
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 unter Windows ab Delphi XE6 und unter macOS, iOS und Android ab Delphi 10.4
Ein Lazarus-LCL-Steuerelement zeigt Kacheln von der Festplatte
In .NET teilen sich SgcMapControl für WinForms, TsgcWpfMap für WPF, TsgcAvaloniaMap für Avalonia 12 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
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
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)
mtsVectorPMTiles liest Vektorkacheln aus einem PMTiles-Archiv, einer lokalen Datei oder einer URL (Offline-Paket)
TsgcMapVectorStyle lädt einen Stil mit LoadFromFile oder LoadFromJSON
Dekodierung und Zeichnen liegen in TsgcMapTileSource_MVT, in reinem Delphi-Code
Städte, Versorgungsunternehmen und Kartierungsbehörden veröffentlichen Flächennutzung, Kataster und Orthofotos als OGC-Webdienste und nicht als z/x/y-Kacheln. Setze TileSourceType auf mtsWMS oder mtsWMTS, und die Ebene fordert ihre Bilder vom Dienst an, als transparentes Overlay über einer Basiskarte oder als Basiskarte selbst. Die Capabilities-Reader listen die Ebenen auf, die ein Dienst anbietet, und konfigurieren die Ebene für dich, sodass deine Benutzer eine Ebene über ihren Titel wählen, statt Anfrageparameter einzutippen.
mtsWMS sendet WMS-1.3.0- oder -1.1.1-GetMap-Anfragen, mit Layers, Styles, ImageFormat und Transparent in den WMS-Optionen der Ebene
mtsWMTS liest KVP- und REST-Dienste über die WMTS-Optionen der Ebene
TsgcMapWMSCapabilities und TsgcMapWMTSCapabilities laden das Capabilities-Dokument, und ApplyToLayer richtet daraus eine Ebene ein
Ein Ausnahmedokument des Servers erreicht OnTileError mit seinem Text
Unter .NET TileSourceType.Wms und TileSourceType.Wmts, mit WmsCapabilities und WmtsCapabilities
In jeder Edition, auch in der kostenlosen Community-Edition, ab Delphi 2009. Die Karte bleibt in Web Mercator: WMS-Ebenen werden in EPSG:3857 angefordert, WMTS-Ebenen brauchen ein Web-Mercator-Kachelmatrix-Set wie GoogleMapsCompatible, und GetFeatureInfo wird nicht unterstützt.
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 sowie MBTiles- und PMTiles-Dateien gehören zum Offline-Paket.
Ein PMTiles-Archiv enthält eine vollständige Kachelpyramide in einer einzigen Datei, die du auf einen Laptop kopierst oder auf einen beliebigen statischen Webserver legst, ohne einen Kachelserver betreiben zu müssen. sgcMaps liest das Archiv aus einer lokalen Datei oder direkt von einem Webserver mit HTTP-Range-Anfragen und hält die gelesenen Verzeichnisse in einem Cache, sodass nur die sichtbaren Kacheln über das Netz laufen.
mtsPMTiles für PNG- und JPEG-Rasterarchive, mtsVectorPMTiles für Mapbox-Vector-Tile-Archive
TileSourcePath nimmt einen Dateinamen oder eine http- oder https-URL
TsgcMapTileSource_PMTiles meldet den Zoombereich, die Grenzen, die Mitte und die Metadaten des Archivs
PMTiles Version 3; Archive mit WebP-Kacheln werden als nicht unterstützt gemeldet
Ab Delphi XE2 und im Registered-Paket esegece.sgcMaps für .NET
PMTiles gehört wie MBTiles zum Offline-Paket und ist daher in der Registered Edition enthalten, nicht in der kostenlosen Community-Edition.
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
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
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
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
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.
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
Öffentliche Geodaten werden weiterhin als Esri-Shapefiles ausgeliefert, und räumliche Datenbanken tauschen Geometrie als Well Known Text aus. TsgcMapShapefile importiert die Punkte, Linien und Polygone eines Shapefiles zusammen mit seiner Attributtabelle, sodass jeder Marker den Datensatz zeigen kann, aus dem er stammt. WKT und das von PostGIS geschriebene EWKT werden gelesen und geschrieben, und das ist der einfachste Weg, eine Zone zwischen der Karte und einer Geometriespalte deiner Datenbank zu verschieben.
LoadFromFile liest die .shp mit ihren Dateien .shx, .dbf, .prj und .cpg; OnItem erhält jede Attributzeile und LabelField legt den Popup-Text der Punkte fest
Eine .prj in WGS84-, ETRS89- oder NAD83-Grad oder in Web Mercator lädt direkt, und eine Datei ohne .prj wird als WGS84 gelesen
Jede andere Projektion löst einen klaren Fehler aus, es sei denn, dein OnTransform-Handler wandelt die Koordinaten um
sgcMapLoadWKT und TsgcMapWKT lesen POINT, LINESTRING, POLYGON, ihre MULTI-Formen und GEOMETRYCOLLECTION, in Grad oder Web-Mercator-Metern, und AsText schreibt die Karte zurück
In jeder Edition ab Delphi 7; unter .NET ShapefileFormat und WktFormat mit einem Transform-Callback
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
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 unter Windows ab Delphi XE6 und unter macOS, iOS und Android ab Delphi 10.4 (macOS ARM ab Delphi 11), mit denselben Sammlungen wie TsgcVCLMap
TsgcMapLocation unter Windows, Android, iOS und macOS
Die FMX-Demo zeigt Kacheln, Marker und Standort in einem Formular, und die FMX-Mobile-Demo ist für Smartphones und Tablets ausgelegt
Der frameworkneutrale Kern lässt sich auch für Linux 64 Bit ab Delphi 10.4 kompilieren, für Konsolen- und Serveranwendungen, die die Kachelquellen, die Dateiformate und die Offline-Daten nutzen
Drei Laufzeitpakete, sgcMaps (der Kern), sgcMapsVCL und sgcMapsFMX, sodass eine FireMonkey-Anwendung die VCL-Pakete nicht mehr lädt
Die Mindestversionen von Delphi pro Feature stehen im Installationsthema
TsgcWpfMap und TsgcAvaloniaMap bringen die .NET-Karten-Engine mit den Funktionen des WinForms-Steuerelements nach WPF und Avalonia 12: Verschieben und Zoomen mit Maus, Touch und Tastatur, Ebenen, Marker, Formen, Drucken, PDF-Export und UI Automation. Ebenen und Marker werden in XAML unter dem Präfix sgc deklariert, und eine Sammlung deines Viewmodels wird über ItemsSource zu Markern, sodass das Hinzufügen eines Geschäfts zur Sammlung es auf die Karte setzt und das Ziehen seines Markers die neue Position zurückschreibt.
LatitudeMember, LongitudeMember, TooltipMember, PopupMember, ColorMember und DraggableMember ordnen deine Eigenschaften den Markern zu
SelectedItem, Zoom, Bearing, CenterLatitude und CenterLongitude binden in beide Richtungen
Farben werden in XAML als Text #AARRGGBB oder #RRGGBB geschrieben
NuGet esegece.sgcMaps.Wpf (net8.0-windows bis net10.0-windows) und esegece.sgcMaps.Avalonia (net8.0 bis net10.0), beide mit einem kostenlosen Community-Paket
Die Projekte WpfDemo und AvaloniaDemo zeigen dasselbe Fenster in beiden Frameworks
Die Vorschau zeigt genau das, was Drucker und PDF erhalten.
Drucken, Vorschau und PDF
Die Kartenansicht drucken oder als barrierefreies PDF exportieren
Die Karte wird auf einer Seite als Bild der aktuellen Ansicht gedruckt: derselbe Bereich wie beim Steuerelement, mit Mittelpunkt, Zoom, Kacheln, Ebenen, Markierungen und Formen. Die Maßstabsleiste und die Quellenangabe werden gedruckt, die Zoom-Schaltflächen, der Ebenenumschalter und der Kompass nicht, und das Drucken verschiebt die Ansicht nie.
Print zeigt den Druckdialog oder druckt direkt auf dem Standarddrucker, und ShowPrintPreview öffnet eine Vorschau mit Seitennavigation, Zoom, Seiteneinrichtung, Drucken und PDF-Export
PrintSettings enthält Papier, Ausrichtung, Ränder, Skalierung sowie Kopf- und Fußzeilentext, und Drucker, Vorschau und PDF verwenden alle dieselben Einstellungen
ExportToPDF schreibt die Seite als ein getaggtes Bild, standardmäßig mit 192 dpi, mit einem Alternativtext, der den Mittelpunkt, den Zoom und die Anzahl der Ebenen und Markierungen angibt
PDFALevel von TsgcUIPDFOptions ergänzt PDF/A-2a oder PDF/A-3a für die Archivierung, allein oder zusammen mit PDF/UA
Drucken und die Vorschau sind in jeder Edition enthalten, auch in der kostenlosen Community-Edition, unter VCL, FireMonkey, WinForms, WPF und Avalonia. In FireMonkey funktioniert das Drucken unter Windows und macOS, die Vorschau und der PDF-Export auf jeder Plattform. Der PDF-Export erfordert die sgcUIPDF-Brücke und ein lizenziertes sgcPDF (unter .NET das NuGet-Paket esegece.sgcUICore.sgcPDF) und ist daher nicht in der Community-Edition enthalten.
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 stellen die Kartensteuerelemente für WinForms, WPF und Avalonia dieselbe UI-Automation-Struktur und dieselbe Tastaturbedienung bereit
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, WPF und Avalonia. 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, die die neuen Kartensteuerelemente für WPF und Avalonia noch nicht abdecken. 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.
Polylinien, Polygone und Heatmaps auf derselben Karte.
Ein Gebiet, vier Anbieter ohne Schlüssel, jeder mit eigenem Quellenhinweis.
ANWENDUNGSFÄLLE
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.
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.
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.
Ein WMS-Overlay und ein Shapefile-Import mit seinen Attributen in Delphi, und ein WPF-Fenster mit der Karte, einer Ebene und einem Marker, in XAML deklariert.
Ein transparentes WMS-Overlay mit eigenem Kachel-Cache und ein Shapefile, dessen Parks anhand der Attributtabelle grün gefüllt werden. Beides funktioniert in jeder Edition.
uses
Classes, SysUtils, Graphics, sgcMaps_Classes, sgcMaps_VCL, sgcMaps_Shapefile;
procedure TForm2.AddWMSLayer;
var
oLayer: TsgcMapLayer;
begin
// an overlay drawn by a WMS server
oLayer := sgcVCLMap1.Layers.Add;
oLayer.Name := 'Land use';
oLayer.TileSourceType := mtsWMS;
oLayer.URLTemplate := 'https://maps.example.com/geoserver/wms';
oLayer.WMS.Layers := 'landuse,rivers';
oLayer.WMS.Version := mwv130;
oLayer.WMS.ImageFormat := 'image/png';
oLayer.WMS.Transparent := True;
oLayer.IsBaseLayer := False;
oLayer.Opacity := 0.7;
oLayer.CacheFolder := ExtractFilePath(ParamStr(0)) + 'cache\landuse';
end;
procedure TForm2.ImportLandUse;
var
oShp: TsgcMapShapefile;
begin
oShp := TsgcMapShapefile.Create;
try
// points get the NAME field as popup text (the field must exist)
oShp.LabelField := 'NAME';
oShp.OnItem := ShapefileItem;
// reads landuse.shx, .dbf, .prj and .cpg next to the .shp
oShp.LoadFromFile('C:\Data\landuse.shp', sgcVCLMap1.Markers,
sgcVCLMap1.Polylines, sgcVCLMap1.Polygons);
memoLog.Lines.Add(Format('%d records, %d skipped, fields: %s',
[oShp.RecordCount, oShp.SkippedCount, oShp.Fields.CommaText]));
finally
oShp.Free;
end;
end;
procedure TForm2.ShapefileItem(Sender: TObject; aRecord: Integer;
aAttributes: TStrings; aItem: TCollectionItem);
begin
// aAttributes holds the .dbf row as Name=Value lines
if (aItem is TsgcMapPolygon) and (aAttributes.Values['USE'] = 'PARK') then
TsgcMapPolygon(aItem).FillColor := clGreen;
end;
Die Ebenen und Marker einer TsgcWpfMap werden in XAML unter dem Präfix sgc deklariert. Der Code-Behind fügt einen Kachel-Cache, eine Linie und drei Ereignisse hinzu.
using System;
using System.IO;
using System.Windows;
using esegece.sgcMaps;
namespace MapQuickStartWpf
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// cache the tiles of the layer declared in XAML
MainMap.Layers[0].CacheFolder = Path.Combine(AppContext.BaseDirectory, "tile_cache");
// a line from Puerta del Sol to Retiro Park
Polyline line = MainMap.Map.AddPolyline();
line.AddPoint(40.4168, -3.7038);
line.AddPoint(40.4153, -3.6844);
line.Color = MapColors.Blue;
line.Width = 4;
MainMap.MapClick += (s, e) => Title = $"Click at {e.Latitude:F5}, {e.Longitude:F5}";
MainMap.MarkerDragEnd += (s, e) => Title = $"Dropped at {e.Item.Latitude:F5}, {e.Item.Longitude:F5}";
MainMap.TileError += (s, e) => Title = $"Tile {e.Zoom}/{e.X}/{e.Y}: {e.Error}";
}
}
}
Zu sgcMaps gehören elf Delphi-Demos und acht .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
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
Ein Vektorkachelserver, gezeichnet mit dem eingebauten Stil oder einer eigenen Stildatei, mit scharfen Beschriftungen bei jeder Zoomstufe.
FMXMobile
Die FireMonkey-Karte für Smartphones und Tablets: Verschieben mit einem Finger, Pinch-Zoom, große Zoom-Schaltflächen, deine Position mit Genauigkeitskreis und eine Liste von Orten. Delphi 10.4 und neuer.
OGCServices
Lädt ein WMS- oder WMTS-Capabilities-Dokument von einer URL oder aus einer Datei, listet die Ebenen auf und fügt die gewählte als Overlay über OpenStreetMap hinzu, mit einem Deckkraft-Schieberegler. Delphi 2009 und neuer.
Nur Registered PMTiles
Öffnet ein PMTiles-Raster- oder -Vektorarchiv aus einer Datei oder von einer URL, zeigt Header und Metadaten und fügt es als Ebene hinzu, auf das Archiv zentriert. Delphi XE2 und neuer.
ShapefileWKT
Importiert ein Shapefile mit seiner Attributtabelle, zeigt den Datensatz eines angeklickten Markers und importiert und exportiert WKT.
WinFormsDemo
Das .NET-SgcMapControl in einem WinForms-Fenster mit Anbietern, Markern und Formen.
WpfDemo
Die in XAML deklarierte WPF-Karte: Basisebenen und Marker im Markup, Geschäfte als Marker mit ItemsSource gebunden, Zoom- und Peilungs-Schieberegler, Drucken und PDF-Export.
AvaloniaDemo
Dasselbe Fenster mit dem Avalonia-12-Kartensteuerelement und kompilierten Bindungen.
OgcServicesDemo
Das WinForms-Kartensteuerelement mit einer OpenStreetMap-Basisebene und einem Overlay aus einem WMS- oder WMTS-Dienst: lädt ein Capabilities-Dokument von einer URL oder aus einer Datei, listet die Ebenen auf, fügt die gewählte mit einem Deckkraft-Schieberegler hinzu und zeigt Kachelfehler an.
Nur Registered PMTilesDemo
Das WinForms-Kartensteuerelement mit einer Ebene aus einem PMTiles-Raster- oder -Vektorarchiv, aus einer Datei oder von einer URL geöffnet, mit Header und Metadaten und der auf das Archiv zentrierten Karte.
ShapefileWktDemo
Das WinForms-Kartensteuerelement importiert ein Shapefile mit seiner Attributtabelle und dem Datensatz eines angeklickten Markers, dazu WKT-Import und -Export der Overlays.
Nur Registered OfflineDemo
Das .NET-Offline-Paket: Offline-Kacheln, Routing und Geocoding aus lokalen Datendateien.
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.
Fünf QuickStart-Demos für Delphi (VCL) liegen in Demos\Maps\00.QuickStart. Der PDF-Leitfaden (auf Englisch) führt Schritt für Schritt durch sie: eine erste Karte mit Markern, im Code hinzugefügte Marker und Beschriftungen, Formen, die Karten-Ereignisse und ein Filialfinder.
Die kostenlose .NET Community Edition (NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community, esegece.sgcMaps.Avalonia.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.
Funktion
Community (kostenlos)
Registered
VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Kartensteuerelemente
✓
✓
Kachelanbieter, HTTP- und Vektorkachelserver
✓
✓
WMS- und WMTS-Ebenen
✓
✓
z/x/y-Kachelordner und der Kachel-Cache pro Ebene
✓
✓
Marker, Clustering, Formen, Beschriftungen und Heatmaps
✓
✓
Geometriefunktionen
✓
✓
GeoJSON-, GPX- und KML-Import und -Export
✓
✓
Shapefile-Import, WKT-Import und -Export
✓
✓
Online-Geocoding, Wegbeschreibungen, Orte, Höhe und Zeitzonen
✓
✓
Statisches Rendering als PNG
✓
✓
Kachel-Downloader für Offline-Pakete
−
✓
MBTiles- und PMTiles-Dateien (Raster und Vektor)
−
✓
Offline-Router und Offline-Geocoder
−
✓
PLATTFORMEN
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.
GIS-Formate und OGC-Dienste
TsgcMapShapefile, TsgcMapWKT, TsgcMapWMSCapabilities, TsgcMapWMTSCapabilities und TsgcMapTileSource_PMTiles.
TsgcMapLocation und Geometriehilfen
Gerätestandort sowie sgcMapDistance, Peilung, Zielpunkt, geodätische Interpolation, Punkt im Polygon und Linienvereinfachung.
.NET-Karten
SgcMapControl für WinForms, TsgcWpfMap für WPF, TsgcAvaloniaMap für Avalonia 12 und MapView, die Headless-Engine, die PNG rendert, auch unter Linux.
Ziel
Komponente
Plattformen
Delphi 7 bis 13, VCL
TsgcVCLMap und das Modell
Win32, Win64 ab XE2 und ARM64EC in Delphi 13
Delphi XE6 bis 13, FireMonkey
TsgcFMXMap
Windows ab XE6; macOS, iOS und Android ab Delphi 10.4 (macOS ARM ab Delphi 11); Gerätestandort unter Windows, Android, iOS und macOS
Delphi 10.4 bis 13, Linux 64 Bit
Der frameworkneutrale Kern, kein Kartensteuerelement
Kachelquellen, Dienste, Dateiformate und Offline-Daten in Konsolen- und Serveranwendungen
C++ Builder 2007 bis 13
TsgcVCLMap, TsgcFMXMap ab XE6 und das Modell
Nur Windows: Win32, Win64 ab XE3 und Win64x in C++ Builder 13, mit generierten .hpp-Headern und statischen Bibliotheken
Lazarus
LCL-Kartensteuerelement
Nur Kacheln von der Festplatte, Kacheln lassen sich nicht herunterladen
WinForms und WPF (net8.0-windows, net9.0-windows, net10.0-windows), Avalonia 12 (net8.0, net9.0, net10.0), headless PNG unter Windows und Linux
Delphi-Pakete: sgcMaps enthält den frameworkneutralen Kern, sgcMapsVCL die VCL-Karte und sgcMapsFMX die FireMonkey-Karte, mit den Entwurfszeitpaketen dclsgcMaps und dclsgcMapsFMX. Ein mit Laufzeitpaketen erstelltes Projekt, das sgcMaps aufführt, fügt sgcMapsVCL oder sgcMapsFMX hinzu. Siehe Pakete und Plattformen.
FAQ
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, MBTiles-Dateien oder PMTiles-Archiven kommen, Routen von TsgcMapOfflineRouter und die Adresssuche von TsgcMapOfflineGeocoder. MBTiles, PMTiles, der Kachel-Downloader sowie der Offline-Router und der Offline-Geocoder gehören zum Offline-Paket der Registered Edition.
GeoJSON, GPX, KML und WKT mit EWKT, für Import und Export, und Esri-Shapefiles mit ihren Attributen für den Import, 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, Shapefile und WKT.
Das Modell, das VCL-Steuerelement, Shapefiles und WKT funktionieren ab Delphi 7 und C++ Builder 2007. Manche Features haben eine höhere Mindestversion: PNG-Ausgabe, Kachelserver, WMS und WMTS ab Delphi 2009, Vektorkacheln, PMTiles und der Offline-Router ab XE2, FireMonkey unter Windows und GeoJSON ab XE6, MBTiles und der Offline-Geocoder ab XE7, Online-Dienste ab XE8. FireMonkey unter macOS, iOS und Android sowie die Kerneinheiten unter Linux 64 Bit erfordern Delphi 10.4 oder neuer.
Ja. Eine Ebene mit TileSourceTypemtsWMS oder mtsWMTS fordert ihre Bilder von einem WMS-1.1.1- oder -1.3.0-Dienst oder von einem WMTS-Dienst in KVP- oder REST-Kodierung an, und die Capabilities-Reader richten die Ebene anhand der Dienstbeschreibung ein. Die Karte ist Web Mercator, daher werden WMS-Ebenen in EPSG:3857 angefordert, und WMTS-Dienste brauchen ein Web-Mercator-Kachelmatrix-Set. WMS und WMTS sind in jeder Edition enthalten, auch in Community. Siehe WMS und WMTS.
Ja. TsgcWpfMap (NuGet esegece.sgcMaps.Wpf) und TsgcAvaloniaMap (esegece.sgcMaps.Avalonia, Avalonia 12) hosten dieselbe Engine wie das WinForms-SgcMapControl. Ebenen und Marker lassen sich in XAML deklarieren, Marker mit ItemsSource an eine Sammlung binden und die Ansicht in beide Richtungen binden. Beide sind auch in der kostenlosen Community-Edition enthalten. Siehe Quick Start WPF und Quick Start Avalonia.
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, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community und esegece.sgcMaps.Avalonia.Community. WMS, WMTS, Shapefiles, WKT und die WPF- und Avalonia-Steuerelemente sind ebenfalls in Community enthalten. Größere Organisationen brauchen eine Registered-Lizenz.
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.