sgcMaps, native kaarten voor Delphi, C++ Builder & .NET
Zet een echte kaart in je toepassing zonder browsercontrol en zonder één regel JavaScript. sgcMaps tekent raster- en vectortiles zelf, voegt lagen van WMS- en WMTS-servers toe, toont duizenden geclusterde markers, routes en zones, geocodeert adressen en blijft offline werken met lokale tiles en een offline router.
VCL, FireMonkey, Lazarus, WinForms, WPF, AvaloniaGeen browsercontrol, geen JavaScriptGratis .NET Community-editieInbegrepen in sgcUI Enterprise
Overal nativeBesturingselementen voor VCL, FireMonkey, Lazarus, WinForms, WPF en Avalonia die de kaart zelf tekenen.
Jouw gegevens op de kaartGeclusterde markers, routes, zones, cirkels, labels en heatmaps uit code of bestanden.
Werkt offlineTiles van schijf, een offline router en een offline geocoder, geen API-sleutel nodig.
Kaarten als afbeeldingenRender PNG-bestanden vanuit een console, een service of een Linux .NET-proces.
BELANGRIJKSTE FUNCTIES
Alles wat een kaarttoepassing nodig heeft
Achttien functies, elk met de echte API en het helponderwerp erachter.
Tiles en kaartgegevens
De kaartcontrol tekent elke tile zelf, vanaf een tileserver, een WMS- of WMTS-service, een vectorbron of bestanden op schijf.
Tiles en kaartgegevens
Een echte kaart in je formulier, zonder browser erin
De meeste kaartcomponenten verpakken een webview en een JavaScript-bibliotheek, waardoor je desktoptoepassing uiteindelijk een browser meelevert. sgcMaps niet. TsgcVCLMap en TsgcFMXMap downloaden, cachen en tekenen de tiles op hun eigen canvas, verwerken zoomen met het muiswiel en slepen om te pannen, en geven gewone Delphi-events. Je kaart is een native control zoals elke andere: hij dockt, volgt het thema van het formulier en debugt zoals de rest van je code. Er is geen extra proces om uit te rollen of te beveiligen, en de kaart gedraagt zich hetzelfde op elke machine waarop je toepassing draait.
De collectie Layers bevat een of meer TsgcMapLayer-items, elk met een eigen TileSourceType
TsgcFMXMap draait op Windows vanaf Delphi XE6, en op macOS, iOS en Android vanaf Delphi 10.4
Een Lazarus LCL-control toont tiles van schijf
In .NET delen SgcMapControl voor WinForms, TsgcWpfMap voor WPF, TsgcAvaloniaMap voor Avalonia 12 en de headless MapView één engine
Rechts naar links voor Arabisch en Hebreeuws: de zoomknoppen, laagwisselaar, kompas, schaalbalk en bronvermelding verhuizen naar de andere kant, terwijl de kaart zijn geografische oriëntatie behoudt
Een basiskaart kiezen mag niet betekenen dat je de documentatie van een tileserver moet lezen. Stel Provider in op een laag en roep sgcMapApplyProvider aan: de laag krijgt het URL-sjabloon, het maximale zoomniveau en de bronvermelding van die provider. OpenStreetMap, OpenTopoMap, Esri World Imagery en Esri World Street werken zonder sleutel. MapTiler, Thunderforest en Stadia gebruiken je eigen API-sleutel. Je eigen tileserver is één URL-sjabloon verwijderd. Elke laag heeft zijn eigen provider, dus een satellietlaag en een straatlaag kunnen in dezelfde kaart zitten en de gebruiker schakelt er op de kaart zelf tussen.
Zonder sleutel: mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreet
Met je sleutel: mtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmooth
mtpCustom met URLTemplate leest elke {z}/{x}/{y}-server
De bronvermelding van de provider wordt voor je op de kaart getekend
Rastertiles worden wazig als je ze schaalt, en elke stijlwijziging betekent nieuwe afbeeldingen van de server. Bij vectortiles ontvangt de control de geometrie en tekent hij wegen, water, gebouwen en labels zelf, zodat tekst scherp blijft op high-DPI-schermen en in geëxporteerde afbeeldingen. Wijs een laag naar een Mapbox Vector Tile-server en laat VectorStyleFile leeg om de ingebouwde stijl te gebruiken, of laad een MapLibre- of Mapbox GL-stijlbestand om bij je huisstijl te passen. Vectorlagen werken in de VCL- en de FireMonkey-control.
mtsVectorHTTP leest een vectortileserver, vanaf Delphi XE2
mtsVectorMBTiles leest een lokaal vector-MBTiles-bestand (offlinepakket)
mtsVectorPMTiles leest vectortiles uit een PMTiles-archief, een lokaal bestand of een URL (offlinepakket)
TsgcMapVectorStyle laadt een stijl met LoadFromFile of LoadFromJSON
Decoderen en tekenen zitten in TsgcMapTileSource_MVT, in gewone Delphi-code
Gemeenten, nutsbedrijven en kaartinstanties publiceren landgebruik, kadaster en luchtfoto's als OGC-webservices in plaats van als z/x/y-tiles. Stel TileSourceType in op mtsWMS of mtsWMTS en de laag vraagt haar afbeeldingen op bij de service, als transparante overlay op een basiskaart of als de basiskaart zelf. De capabilitieslezers tonen de lagen die een service aanbiedt en stellen de laag voor je in, zodat je gebruikers een laag kiezen op titel in plaats van aanvraagparameters te typen.
mtsWMS verstuurt WMS 1.3.0- of 1.1.1-GetMap-verzoeken, met Layers, Styles, ImageFormat en Transparent in de WMS-opties van de laag
mtsWMTS leest KVP- en REST-services via de WMTS-opties van de laag
TsgcMapWMSCapabilities en TsgcMapWMTSCapabilities laden het capabilitiesdocument, en ApplyToLayer stelt er een laag mee in
Een exceptiedocument van de server bereikt OnTileError met de tekst ervan
In .NET TileSourceType.Wms en TileSourceType.Wmts, met WmsCapabilities en WmtsCapabilities
In elke editie, ook in de gratis Community-editie, vanaf Delphi 2009. De kaart blijft in Web Mercator: WMS-lagen worden opgevraagd in EPSG:3857, WMTS-lagen hebben een Web Mercator tile matrix set nodig, zoals GoogleMapsCompatible, en GetFeatureInfo wordt niet ondersteund.
Een monteur in een kelder, een schip op zee of een fabrieksnetwerk kan niet afhankelijk zijn van een tileserver. sgcMaps leest tiles van schijf precies zoals van het web. Geef een laag een CacheFolder en elke tile die hij ophaalt, wordt bewaard voor de volgende keer. Voor een volledig offlinepakket haalt TsgcMapTileDownloader vooraf een gebied en een zoombereik op in een map of een MBTiles-bestand.
mtsFolder leest een z/x/y-map met PNG- of JPEG-tiles
mtsMBTiles leest een raster-MBTiles-bestand, vanaf Delphi XE7 (FireDAC SQLite)
CountTiles geeft de grootte van een download voordat je begint; DelayMS en OnProgress houden hem beleefd en zichtbaar
Bulkdownloads moeten de voorwaarden van de provider respecteren: OpenStreetMap-tiles zijn alleen voor interactief bekijken
Community leest z/x/y-tilemappen en houdt de CacheFolder per laag bij. De tiledownloader en de MBTiles- en PMTiles-bestanden horen bij het offlinepakket.
Een PMTiles-archief bevat een complete tilepiramide in één bestand dat je naar een laptop kopieert of op een willekeurige statische webserver zet, zonder tileserver die draaiende moet blijven. sgcMaps leest het archief uit een lokaal bestand, of rechtstreeks van een webserver met HTTP range-verzoeken, en houdt de mappen die het heeft gelezen in een cache, zodat alleen de zichtbare tiles over het netwerk gaan.
mtsPMTiles voor rasterarchieven met PNG en JPEG, mtsVectorPMTiles voor Mapbox Vector Tile-archieven
TileSourcePath accepteert een bestandsnaam of een http- of https-URL
TsgcMapTileSource_PMTiles geeft het zoombereik, de grenzen, het midden en de metadata van het archief
PMTiles versie 3; archieven met WebP-tiles worden gemeld als niet ondersteund
Vanaf Delphi XE2, en in het geregistreerde pakket esegece.sgcMaps voor .NET
PMTiles hoort bij het offlinepakket, net als MBTiles, en zit dus in de geregistreerde editie en niet in de gratis Community-editie.
Zet je eigen gegevens op de kaart, houd ze leesbaar op elk zoomniveau en reken ermee.
Markers, vormen en geometrie
Duizenden markers, nog steeds leesbaar
Een wagenpark, een winkelnetwerk of een sensorraster verandert snel in een wolk van overlappende spelden. Zet clustering aan en markers dichtbij elkaar smelten samen tot één genummerde bel die weer uiteenvalt als de gebruiker inzoomt, opnieuw berekend op elk zoomniveau. Elke marker heeft zijn eigen popup, tooltip en pictogram, en klikken, slepen en clusterklikken komen binnen als events, zodat de kaart onderdeel van je werkproces wordt in plaats van een plaatje. Markers kun je in een lus uit je gegevens toevoegen of importeren uit GeoJSON-, GPX- en KML-bestanden, en ClearMarkers zet ze met één aanroep terug.
MarkerOptions.Clustering met GridSize, MinClusterSize en ZoomOnClick
PopupText, TooltipText en IconBitmap per marker
De events OnMarkerClick, OnClusterClick en OnMarkerDragEnd
BeginUpdate en EndUpdate rond bulklaadacties; FitToMarkers toont ze allemaal
MarkerAtScreen en ClusterAtScreen doen een hittest op elke pixel
De meeste kaartschermen hebben meer nodig dan spelden: de geplande bezorgroute, het gebied dat een depot bedient, een straal rond een klant, waar de bestellingen vandaan komen. sgcMaps tekent ze allemaal als items van het kaartmodel, in dezelfde coördinaten als je markers. Vormen kunnen bewerkbaar worden gemaakt, zodat een gebruiker de hoekpunten van een zone met de muis kan slepen en je code hoort wanneer de bewerking eindigt. Labels plaatsen tekst op een coördinaat met een eigen lettertype, kleur en achtergrond, zodat zonenamen en routenummers aan de kaart gekoppeld blijven.
AddPolyline met Dashed- en Geodesic-lijnen
AddPolygon met AddHole, plus AddRectangle, AddCircle (RadiusMeters) en AddLabel
Editable-vormen melden wijzigingen via OnShapeEdited
TsgcMapHeatmap neemt gewogen punten met AddPoint en een MaxIntensity
Zit dit voertuig in de zone? Hoe ver is het dichtstbijzijnde depot? Welk punt van de route ligt het dichtst bij de klant? Deze vragen komen in elke kaarttoepassing voor en gaan makkelijk fout bij de polen of over lange afstanden. De geometrie-unit beantwoordt ze op de WGS84-bol met gewone functies die je ook vanuit een service zonder kaart kunt aanroepen. De functies nemen gewone TsgcMapCoord-records, en sgcMapLatLonToPixel en sgcMapPixelToLatLon rekenen om tussen scherm- en wereldcoördinaten als je eigen overlays tekent.
sgcMapDistance in meters, sgcMapInitialBearing en sgcMapDestinationPoint
sgcMapPointInPolygon en sgcMapPointInPolygonWithHoles voor geofences
sgcMapNearestPointOnPolyline snapt een positie naar een route
sgcMapGeodesicInterpolate en sgcMapSimplify voor vloeiende, lichte lijnen
Vind adressen en plan routes met online providers, of volledig offline zonder API-sleutel.
Zoeken en routeren
Geocodering, routebeschrijvingen en plaatsen achter één API
Elke geocodeer- en routeringsprovider heeft zijn eigen REST-formaat, sleutels en eigenaardigheden. De servicecomponenten verbergen die: je kiest een provider, stelt je sleutel in als die nodig is en roept dezelfde methoden aan, synchroon of async. Van provider wisselen is een eigenschap wijzigen, geen herschrijving, en resultaten komen terug als Delphi-objecten die klaar zijn om op de kaart te zetten. Elke component deelt de basisklasse TsgcMapService, dus ApiKey, UserAgent en LastError werken voor elke provider hetzelfde.
TsgcMapGeocoder: Nominatim, Google, HERE, Azure Maps, Mapbox, OpenRouteService en Geoapify
TsgcMapDirections: OSRM, OpenRouteService, Google Routes, HERE, Azure Maps, Mapbox en Geoapify
TsgcMapPlaces voor adresautocomplete, TsgcMapElevation en TsgcMapTimeZone
GeocodeAsync, GetRouteAsync en SuggestAsync houden de UI responsief; fouten komen binnen in OnError
Routes en adressen zoeken zonder internet en zonder sleutel
Online routering faalt precies waar veldapps worden gebruikt, en elk verzoek kan geld kosten. De offline router berekent auto-, fiets- en wandelroutes op het apparaat uit een routegraaf die één keer is gebouwd uit een OpenStreetMap-extract. De offline geocoder zoekt plaatsnamen en geocodeert een klik terug uit een GeoNames-index in SQLite. Beide draaien zonder netwerk, zonder account en zonder kosten per verzoek. De router en de geocoder zijn niet-visuele componenten, dus een Windows-service of een consoletool kan route- en adresverzoeken beantwoorden zonder kaart op het scherm.
TsgcMapOfflineRouter beantwoordt GetRoute uit een graaf die TsgcMapRouteGraphBuilder uit .osm.pbf heeft gebouwd
sgcMapAddRouteToPolylines tekent het resultaat op de kaart
TsgcMapOfflineGeocoder met ReverseGeocode, over een index van TsgcMapGeoIndexBuilder
Opdrachtregelbuilders voor de graaf en de index staan in de map Tools
Community gebruikt de onlineservices; de offline router en geocoder horen bij het offlinepakket.
Wissel geodata uit met andere tools, render kaarten waar geen scherm is en neem de kaart mee naar een telefoon, een WPF-venster of een Avalonia-venster.
Bestanden, renderen en mobiel
Open de bestanden die je gebruikers al hebben
Klanten sturen tracks van een gps-horloge, zones getekend in een GIS-tool of een KML uit een ander systeem. sgcMaps leest en schrijft GeoJSON, GPX en KML rechtstreeks in het kaartmodel, dus een import is één aanroep en een export een andere. GPX-tracks komen met hun statistieken en kunnen op hoogte worden gekleurd, en een streamende lezer loopt door grote OpenStreetMap-extracten zonder ze in het geheugen te laden. Exports gebruiken dezelfde functies omgekeerd, zodat zones die een gebruiker op de kaart tekende, als GeoJSON of KML kunnen worden opgeslagen en in andere GIS-tools geopend.
sgcMapLoadGeoJSONFile en sgcMapSaveGeoJSONFile, vanaf Delphi XE6
TsgcMapGPX met TrackStats (TotalAscent, TotalDescent) en ColorByElevation
sgcMapLoadKMLFile en sgcMapSaveKMLFile
De OpenStreetMap-lezer streamt .osm.pbf- en XML-bestanden via events
sgcMapGeoJSONAsText geeft de GeoJSON van de kaart als string terug
Openbare geodata worden nog steeds als Esri-shapefiles geleverd, en ruimtelijke databases wisselen geometrie uit als Well Known Text. TsgcMapShapefile importeert de punten, lijnen en polygonen van een shapefile samen met de attributentabel, zodat elke marker het record kan tonen waaruit hij komt. WKT en de door PostGIS geschreven EWKT worden gelezen en geschreven, wat de eenvoudigste manier is om een zone tussen de kaart en een geometriekolom van je database te verplaatsen.
LoadFromFile leest de .shp met de bijbehorende .shx-, .dbf-, .prj- en .cpg-bestanden; OnItem ontvangt elke attributenrij en LabelField bepaalt de popuptekst van de punten
Een .prj in graden WGS84, ETRS89 of NAD83, of in Web Mercator, wordt direct geladen, en een bestand zonder .prj wordt als WGS84 gelezen
Elke andere projectie geeft een duidelijke foutmelding, tenzij je OnTransform-handler de coördinaten converteert
sgcMapLoadWKT en TsgcMapWKT lezen POINT, LINESTRING, POLYGON, hun MULTI-vormen en GEOMETRYCOLLECTION, in graden of in Web Mercator-meters, en AsText schrijft de kaart terug
In elke editie vanaf Delphi 7; in .NET ShapefileFormat en WktFormat met een Transform-callback
Vrachtbrieven met de route, een dagrapport met de incidenten van vandaag, een miniatuur voor een webpagina: veel kaarten worden nooit in een venster getoond. Dezelfde control rendert naar een PNG of een bitmap zonder zichtbaar te zijn, vanuit een consoletoepassing of een Windows-service. Je kunt controleren of elke tile is aangekomen voordat je de afbeelding verstuurt, zodat een trage tileserver nooit als grijs vierkant in een klantdocument belandt. Rendering op de server gebruikt dezelfde lagen, markers en vormen als de interactieve control, dus een kaart die op het scherm is ontworpen, ziet er in de PNG hetzelfde uit.
SaveToPNG en SaveToPNGFile, vanaf Delphi 2009
RenderToBitmap en SaveToBMPFile voor je eigen pipeline
LastRenderMissingTiles meldt tiles die niet beschikbaar waren
Een planner werkt op een Windows-desktop en de chauffeur volgt het plan op een telefoon. TsgcFMXMap brengt hetzelfde model, dezelfde lagen, markers, vormen en services naar FireMonkey op Windows, macOS, iOS en Android, zodat de code die je voor de VCL-kaart schreef, overgaat. TsgcMapLocation leest de positie van het apparaat, zodat de kaart kan centreren op de gebruiker en hem kan volgen. De tilecache per laag werkt ook op mobiel, dus een telefoon blijft de gebieden tonen die hij al heeft geladen.
TsgcFMXMap op Windows vanaf Delphi XE6, en op macOS, iOS en Android vanaf Delphi 10.4 (macOS ARM vanaf Delphi 11), met dezelfde collecties als TsgcVCLMap
TsgcMapLocation op Windows, Android, iOS en macOS
De FMX-demo toont tiles, markers en locatie in één formulier, en de FMX Mobile-demo is ingericht voor telefoons en tablets
De frameworkneutrale kern compileert ook voor Linux 64 bit vanaf Delphi 10.4, voor console- en servertoepassingen die de tilebronnen, de bestandsformaten en de offlinegegevens gebruiken
Drie runtimepakketten, sgcMaps (de kern), sgcMapsVCL en sgcMapsFMX, zodat een FireMonkey-toepassing de VCL-pakketten niet meer laadt
Minimale Delphi-versies per functie staan in het installatieonderwerp
TsgcWpfMap en TsgcAvaloniaMap brengen de .NET-kaartengine naar WPF en naar Avalonia 12 met de functies van de WinForms-control: pannen en zoomen met muis, aanraking en toetsenbord, lagen, markers, vormen, afdrukken, PDF-export en UI Automation. Lagen en markers worden in XAML gedeclareerd onder het voorvoegsel sgc, en een collectie van je viewmodel wordt markers via ItemsSource, zodat een winkel toevoegen aan de collectie hem op de kaart zet en het slepen van zijn marker de nieuwe positie terugschrijft.
LatitudeMember, LongitudeMember, TooltipMember, PopupMember, ColorMember en DraggableMember koppelen je eigenschappen aan markers
SelectedItem, Zoom, Bearing, CenterLatitude en CenterLongitude binden in twee richtingen
Kleuren worden in XAML geschreven als tekst #AARRGGBB of #RRGGBB
NuGet esegece.sgcMaps.Wpf (net8.0-windows tot net10.0-windows) en esegece.sgcMaps.Avalonia (net8.0 tot net10.0), beide met een gratis Community-pakket
De projecten WpfDemo en AvaloniaDemo tonen hetzelfde venster in beide frameworks
Het voorbeeld toont precies wat de printer en de PDF krijgen.
Afdrukken, voorbeeld en PDF
De kaartweergave afdrukken of een toegankelijke PDF exporteren
De kaart wordt op één pagina afgedrukt als een afbeelding van de huidige weergave: hetzelfde gebied als het besturingselement, met zijn middelpunt, zijn zoom, de tegels, de lagen, de markeringen en de vormen. De schaalbalk en de bronvermelding worden afgedrukt, de zoomknoppen, de laagkiezer en het kompas niet, en afdrukken verplaatst de weergave nooit.
Print toont het afdrukdialoogvenster of drukt rechtstreeks af op de standaardprinter, en ShowPrintPreview opent een voorbeeld met paginanavigatie, zoom, pagina-instelling, afdrukken en PDF-export
PrintSettings bevat het papier, de afdrukstand, de marges, de schaal en de tekst van de kop- en voettekst, en de printer, het voorbeeld en de PDF gebruiken ze allemaal
ExportToPDF schrijft de pagina als één getagde afbeelding, standaard met 192 dpi, met een alternatieve tekst die het middelpunt, de zoom en het aantal lagen en markeringen geeft
PDFALevel van TsgcUIPDFOptions voegt PDF/A-2a of PDF/A-3a toe voor archivering, alleen of samen met PDF/UA
Afdrukken en het voorbeeld zitten in elke editie, ook in de gratis Community-editie, op VCL, FireMonkey, WinForms, WPF en Avalonia. In FireMonkey werkt afdrukken op Windows en macOS, en het voorbeeld en de PDF-export op elk platform. De PDF-export vereist de sgcUIPDF-bridge en een gelicentieerde sgcPDF (in .NET het NuGet-pakket esegece.sgcUICore.sgcPDF), dus zit niet in de Community-editie.
UI Automation voor schermlezers en het toetsenbord, zonder configuratie.
Toegankelijkheid
Een kaart die het toetsenbord kan bereiken en UI Automation aanbiedt
sgcMaps biedt de kaart aan Microsoft UI Automation aan met een tekstalternatief, de markeringen als lijst en de lagen als lijst, waarbij elke laag meldt of hij zichtbaar is. De markeringen zijn met het toetsenbord te bereiken.
Pijltoetsen verschuiven de kaart, de plus- en mintoetsen zoomen, en Home keert terug naar de beginweergave
Page Up en Page Down gaan naar de vorige of volgende markering, Enter activeert de markering met focus en Esc wist de markeringsfocus
De kaart toont een zichtbare focusring zolang hij de focus heeft
In .NET stellen de WinForms-, WPF- en Avalonia-kaartcontrols dezelfde UI Automation-structuur en hetzelfde toetsenbord beschikbaar
Toegankelijkheid staat standaard aan in elke editie, ook in de gratis Community-editie, op VCL in elke Delphi- en C++Builder-versie van Delphi 7 tot en met Delphi 13, op FireMonkey op Windows, en op WinForms, WPF en Avalonia. In Delphi en C++Builder stellen AccessibleName en AccessibleDescription de naam en de beschrijving in die aan UI Automation worden aangeboden, en in .NET doen de standaard toegankelijke naam en helptekst van elk framework hetzelfde. Zie de toegankelijkheidsrapporten, die de nieuwe WPF- en Avalonia-kaartcontrols nog niet dekken. De kaartafbeelding wordt alleen beschreven met het midden en de zoom, en de kaartrenderer volgt Windows hoog contrast niet, omdat de kaartafbeelding tegelbeeld van de provider is.
Polylijnen, polygonen en heatmaps getekend op dezelfde kaart.
Eén gebied, vier providers zonder sleutel, elk met zijn eigen bronvermelding.
TOEPASSINGEN
Wie bouwt er met sgcMaps
Buitendienst en logistiek
Monteurs en chauffeurs hebben de kaart nodig waar de dekking slecht is. Bereid de tiles van een regio vooraf voor, bereken autoroutes op het apparaat met de offline router en vind adressen met de offline geocoder. Terug op kantoor tekent dezelfde code de geplande routes en bezorgzones en rendert een PNG van elke route voor de vrachtbrief.
Een controlekamer houdt honderden voertuigen, machines of sensoren tegelijk in de gaten. Clustering houdt de kaart leesbaar op landniveau en splitst op straatniveau uit in losse spelden. Een heatmap toont waar incidenten zich concentreren, geofencecontroles met punt-in-polygoon geven alarmen, en klikevents op markers openen het record van de asset in je eigen formulieren.
Planningstools, sportapps en opmetingssoftware leven van GPX-tracks, KML-lagen en GeoJSON-zones. sgcMaps importeert en exporteert alle drie, toont trackstatistieken en hoogtekleuren en zet het resultaat op een topografische basiskaart. De FireMonkey-control brengt dezelfde functies naar een tablet of telefoon in het veld. Trackstatistieken geven in één oogopslag de totale stijging en daling van een route.
Dezelfde API in Delphi, C++ Builder en C#: OpenStreetMap-tiles, drie markers, een geodetische lijn en een straal, aangepast aan de markers en opgeslagen als PNG.
Een VCL-kaart in code gebouwd: een gecachete OpenStreetMap-laag, markers, een geodetische lijn en een cirkel, daarna een PNG van het resultaat.
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;
Een WMS-overlay en een shapefile-import met de attributen in Delphi, en een WPF-venster met de kaart, een laag en een marker gedeclareerd in XAML.
Een transparante WMS-overlay met een eigen tilecache, en een shapefile waarvan de parken groen worden gevuld op basis van de attributentabel. Beide werken in elke editie.
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;
De lagen en markers van een TsgcWpfMap worden in XAML gedeclareerd onder het voorvoegsel sgc. De code-behind voegt een tilecache, een lijn en drie events toe.
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}";
}
}
}
Bij sgcMaps worden elf Delphi-demo's en acht .NET-demo's geleverd. Er zijn geen C++ Builder-demoprojecten.
Alleen geregistreerd OfflineMap
Map-, MBTiles- en online tiles, markers en vormen, plus import van GeoJSON, GPX en KML.
MapFeatures
Providers en API-sleutels, markerclustering, vormen bewerken, heatmaps en afbeeldingsexport.
Services
Plaatsen zoeken, geocodering, routebeschrijvingen, hoogte, tijdzones en apparaatlocatie met de onlineproviders. Delphi XE8 en later.
Alleen geregistreerd OfflineServices
Bouw een GeoNames-index en een OpenStreetMap-routegraaf, zoek daarna plaatsen en routeer met auto, fiets of te voet zonder netwerk.
StaticRender
Een consoleprogramma dat een kaart zonder venster naar een PNG- of BMP-bestand rendert.
FMX
De FireMonkey-kaart met tiles, markers en apparaatlocatie, voor Windows, macOS, iOS en Android. Delphi XE6 en later.
VectorTiles
Een vectortileserver getekend met de ingebouwde stijl of een eigen stijlbestand, met scherpe labels op elk zoomniveau.
FMXMobile
De FireMonkey-kaart gemaakt voor telefoons en tablets: pannen met één vinger, zoomen met knijpen, grote zoomknoppen, je positie met een nauwkeurigheidscirkel en een lijst met plaatsen. Delphi 10.4 en later.
OGCServices
Laadt een WMS- of WMTS-capabilitiesdocument uit een URL of een bestand, toont de lagen en voegt de gekozen laag toe als overlay op OpenStreetMap, met een schuifregelaar voor de dekking. Delphi 2009 en later.
Alleen geregistreerd PMTiles
Opent een raster- of vector-PMTiles-archief uit een bestand of een URL, toont de header en de metadata en voegt het toe als laag, gecentreerd op het archief. Delphi XE2 en later.
ShapefileWKT
Importeert een shapefile met de attributentabel, toont het record van een aangeklikte marker en importeert en exporteert WKT.
WinFormsDemo
De .NET-SgcMapControl in een WinForms-venster met providers, markers en vormen.
WpfDemo
De WPF-kaart gedeclareerd in XAML: basislagen en markers in markup, winkels gekoppeld als markers met ItemsSource, schuifregelaars voor zoom en rotatie, afdrukken en PDF-export.
AvaloniaDemo
Hetzelfde venster met de Avalonia 12-kaartcontrol en gecompileerde bindings.
OgcServicesDemo
De WinForms-kaartcontrol met een OpenStreetMap-basislaag en één overlay van een WMS- of WMTS-service: laadt een capabilitiesdocument uit een URL of een bestand, toont de lagen, voegt de gekozen laag toe met een schuifregelaar voor de dekking en toont tilefouten.
Alleen geregistreerd PMTilesDemo
De WinForms-kaartcontrol met een laag uit een raster- of vector-PMTiles-archief, geopend uit een bestand of een URL, met de header en metadata en de kaart gecentreerd op het archief.
ShapefileWktDemo
De WinForms-kaartcontrol importeert een shapefile met de attributentabel en het record van een aangeklikte marker, plus WKT-import en -export van de overlays.
Alleen geregistreerd OfflineDemo
Het .NET-offlinepakket: offline tiles, routering en geocodering uit lokale gegevensbestanden.
ConsoleRenderDemo
Een .NET-console die een kaart naar PNG rendert met de headless MapView, op Windows of Linux.
Gecompileerde demo's
Direct uitvoerbare programma's van elk sgcUI-product, zonder installatie.
Vijf QuickStart-demo's voor Delphi (VCL) staan in Demos\Maps\00.QuickStart. De PDF-gids (Engels) legt ze stap voor stap uit: een eerste kaart met markers, markers en labels die in code worden toegevoegd, vormen, de kaartevents en een winkelzoeker.
De gratis .NET Community-editie (NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community, esegece.sgcMaps.Avalonia.Community) heeft elke functie behalve het offlinepakket. Het pakket esegece.sgcMaps.Offline is alleen geregistreerd. Een project verwijst naar de Community-pakketten of naar de geregistreerde pakketten, nooit naar beide.
Functie
Community (gratis)
Geregistreerd
VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-kaartcontrols
✓
✓
Tileproviders, HTTP- en vectortileservers
✓
✓
WMS- en WMTS-lagen
✓
✓
z/x/y-tilemappen en de tilecache per laag
✓
✓
Markers, clustering, vormen, labels en heatmaps
✓
✓
Geometriefuncties
✓
✓
Import en export van GeoJSON, GPX en KML
✓
✓
Shapefile-import, WKT-import en -export
✓
✓
Online geocodering, routebeschrijvingen, plaatsen, hoogte en tijdzones
✓
✓
Statisch renderen naar PNG
✓
✓
Tiledownloader voor offlinepakketten
−
✓
MBTiles- en PMTiles-bestanden (raster en vector)
−
✓
Offline router en offline geocoder
−
✓
PLATFORMEN
Ondersteunde frameworks en platformen
Componenten in sgcMaps
TsgcVCLMap en TsgcFMXMap
De kaartcontrols voor VCL en FireMonkey, plus een Lazarus LCL-control die tiles van schijf leest.
Modelcollecties
Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels en Heatmaps, gedeeld door elk framework.
Onlineservices
TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation and TsgcMapTimeZone.
Offlinetools
TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder and TsgcMapTileDownloader.
GIS-formaten en OGC-services
TsgcMapShapefile, TsgcMapWKT, TsgcMapWMSCapabilities, TsgcMapWMTSCapabilities en TsgcMapTileSource_PMTiles.
TsgcMapLocation en geometriehulpen
Apparaatlocatie, en sgcMapDistance, richting, bestemmingspunt, geodetische interpolatie, punt in polygoon en lijnvereenvoudiging.
.NET-kaarten
SgcMapControl voor WinForms, TsgcWpfMap voor WPF, TsgcAvaloniaMap voor Avalonia 12 en MapView, de headless engine die naar PNG rendert, ook op Linux.
Doel
Component
Platformen
Delphi 7 tot 13, VCL
TsgcVCLMap en het model
Win32, Win64 vanaf XE2 en ARM64EC in Delphi 13
Delphi XE6 tot 13, FireMonkey
TsgcFMXMap
Windows vanaf XE6; macOS, iOS en Android vanaf Delphi 10.4 (macOS ARM vanaf Delphi 11); apparaatlocatie op Windows, Android, iOS en macOS
Delphi 10.4 tot 13, Linux 64 bit
De frameworkneutrale kern, zonder kaartcontrol
Tilebronnen, services, bestandsformaten en offlinegegevens in console- en servertoepassingen
C++ Builder 2007 tot 13
TsgcVCLMap, TsgcFMXMap vanaf XE6 en het model
Alleen Windows: Win32, Win64 vanaf XE3 en Win64x in C++ Builder 13, met gegenereerde .hpp-headers en statische bibliotheken
Lazarus
LCL-kaartcontrol
Alleen tiles van schijf, het kan geen tiles downloaden
WinForms en WPF (net8.0-windows, net9.0-windows, net10.0-windows), Avalonia 12 (net8.0, net9.0, net10.0), headless PNG op Windows en Linux
Delphi-pakketten: sgcMaps bevat de frameworkneutrale kern, sgcMapsVCL de VCL-kaart en sgcMapsFMX de FireMonkey-kaart, met de designtimepakketten dclsgcMaps en dclsgcMapsFMX. Een project dat met runtimepakketten is gebouwd en sgcMaps vermeldt, voegt sgcMapsVCL of sgcMapsFMX toe. Zie Pakketten en Platformen.
VEELGESTELDE VRAGEN
Veelgestelde vragen
Nee. De tiles, markers en vormen worden native door de control getekend, dus er is geen webview, geen JavaScript-bibliotheek en geen browserruntime om uit te rollen.
Niet voor OpenStreetMap, OpenTopoMap en de Esri-tiles, en niet voor de offline router en geocoder. MapTiler-, Thunderforest- en Stadia-tiles en de commerciële geocodeer- en routeringsproviders gebruiken je eigen sleutel. Elke provider heeft zijn eigen gebruiksvoorwaarden, die je toepassing moet respecteren.
Ja. Tiles kunnen uit z/x/y-mappen, een cache per laag, MBTiles-bestanden of PMTiles-archieven komen, routes van TsgcMapOfflineRouter en adreszoeken van TsgcMapOfflineGeocoder. MBTiles, PMTiles, de tiledownloader en de offline router en geocoder maken deel uit van het offlinepakket van de Registered-editie.
GeoJSON, GPX, KML en WKT met EWKT, voor import en export, en Esri-shapefiles met hun attributen voor import, met GPX-trackstatistieken en hoogtekleuren. Een streamingreader verwerkt ook OpenStreetMap .osm.pbf- en XML-bestanden, waarmee de offline routegraaf wordt gebouwd. Zie Bestandsformaten, Shapefile en WKT.
Het model, de VCL-control, shapefiles en WKT werken vanaf Delphi 7 en C++ Builder 2007. Sommige functies hebben een hoger minimum: PNG-uitvoer, tileservers, WMS en WMTS vanaf Delphi 2009, vectortiles, PMTiles en de offline router vanaf XE2, FireMonkey op Windows en GeoJSON vanaf XE6, MBTiles en de offline geocoder vanaf XE7, onlineservices vanaf XE8. FireMonkey op macOS, iOS en Android, en de kernunits op Linux 64 bit, vereisen Delphi 10.4 of nieuwer.
Ja. Een laag met TileSourceTypemtsWMS of mtsWMTS vraagt haar afbeeldingen op bij een WMS 1.1.1- of 1.3.0-service, of bij een WMTS-service met KVP- of REST-codering, en de capabilitieslezers stellen de laag in op basis van de servicebeschrijving. De kaart is Web Mercator, dus WMS-lagen worden opgevraagd in EPSG:3857 en WMTS-services hebben een Web Mercator tile matrix set nodig. WMS en WMTS zitten in elke editie, ook in Community. Zie WMS en WMTS.
Ja. TsgcWpfMap (NuGet esegece.sgcMaps.Wpf) en TsgcAvaloniaMap (esegece.sgcMaps.Avalonia, Avalonia 12) hosten dezelfde engine als de WinForms-SgcMapControl. Lagen en markers kunnen in XAML worden gedeclareerd, markers kunnen met ItemsSource aan een collectie worden gebonden, en de view kan in twee richtingen worden gebonden. Beide zitten ook in de gratis Community-editie. Zie Snelstart WPF en Snelstart Avalonia.
De demoprojecten zijn alleen voor Delphi, maar de componenten installeren in C++ Builder 2007 tot 13 en werken hetzelfde. Het tabblad C++ Builder in de codesectie hierboven toont dezelfde kaart gebouwd met de gegenereerde headers.
Ja. De Community-editie is gratis voor particulieren en organisaties met minder dan EUR 1M brutojaaromzet en niet meer dan 5 ontwikkelaars. Ze heeft elke functie behalve het offlinepakket. Op .NET zijn de pakketten esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community en esegece.sgcMaps.Avalonia.Community. WMS, WMTS, shapefiles, WKT en de WPF- en Avalonia-controls zitten ook in Community. Grotere organisaties hebben een geregistreerde licentie nodig.
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid
Probeer sgcMaps vandaag
De sgcUI-proefversie bevat sgcMaps met het offlinepakket en alle andere sgcUI-producten. De .NET Community-editie is gratis op NuGet.