sgcMaps, cartes natives pour Delphi, C++ Builder & .NET
Mets une vraie carte dans ton application sans contrôle navigateur ni ligne de JavaScript. sgcMaps dessine lui-même les tuiles raster et vectorielles, ajoute des couches de serveurs WMS et WMTS, affiche des milliers de marqueurs regroupés, des itinéraires et des zones, géocode des adresses et continue de fonctionner hors ligne avec des tuiles locales et un calculateur d'itinéraires hors ligne.
VCL, FireMonkey, Lazarus, WinForms, WPF, AvaloniaPas de contrôle navigateur, pas de JavaScriptÉdition .NET Community gratuiteInclus dans sgcUI Enterprise
Natif partoutDes contrôles VCL, FireMonkey, Lazarus, WinForms, WPF et Avalonia qui dessinent eux-mêmes la carte.
Tes données sur la carteMarqueurs regroupés, itinéraires, zones, cercles, étiquettes et cartes de chaleur à partir du code ou de fichiers.
Fonctionne hors ligneTuiles depuis le disque, calcul d'itinéraires et géocodeur hors ligne, sans clé d'API.
Des cartes en imagesGénère des fichiers PNG depuis une console, un service ou un processus .NET sous Linux.
FONCTIONNALITÉS CLÉS
Tout ce dont une application cartographique a besoin
Dix-huit fonctionnalités, chacune avec l'API réelle et la rubrique d'aide correspondante.
Tuiles et données cartographiques
Le contrôle de carte dessine lui-même chaque tuile, depuis un serveur de tuiles, un service WMS ou WMTS, une source vectorielle ou des fichiers sur le disque.
Tuiles et données cartographiques
Une vraie carte dans ta fiche, sans navigateur à l'intérieur
La plupart des composants de carte encapsulent une vue web et une bibliothèque JavaScript, et ton application de bureau finit par embarquer un navigateur. Pas sgcMaps. TsgcVCLMap et TsgcFMXMap téléchargent, mettent en cache et dessinent les tuiles sur leur propre canevas, gèrent le zoom à la molette et le déplacement par glisser, et déclenchent des événements Delphi normaux. Ta carte est un contrôle natif comme un autre : elle s'ancre, elle suit le thème de la fiche et elle se débogue comme le reste de ton code. Il n'y a aucun processus supplémentaire à déployer ni à sécuriser, et la carte se comporte de la même façon sur chaque machine où ton application s'exécute.
La collection Layers contient un ou plusieurs éléments TsgcMapLayer, chacun avec son propre TileSourceType
TsgcFMXMap fonctionne sous Windows à partir de Delphi XE6, et sous macOS, iOS et Android à partir de Delphi 10.4
Un contrôle Lazarus LCL affiche des tuiles depuis le disque
En .NET, SgcMapControl pour WinForms, TsgcWpfMap pour WPF, TsgcAvaloniaMap pour Avalonia 12 et le MapView sans interface partagent un seul moteur
De droite à gauche pour l'arabe et l'hébreu : les boutons de zoom, le sélecteur de couches, la boussole, l'échelle et l'attribution passent du côté opposé, tandis que la carte garde son orientation géographique
Choisis un fournisseur de tuiles avec une seule propriété
Choisir un fond de carte ne devrait pas obliger à lire la documentation d'un serveur de tuiles. Définis Provider sur une couche et appelle sgcMapApplyProvider : la couche reçoit le modèle d'URL, le zoom maximal et le texte d'attribution de ce fournisseur. OpenStreetMap, OpenTopoMap, Esri World Imagery et Esri World Street fonctionnent sans clé. MapTiler, Thunderforest et Stadia demandent ta propre clé d'API. Ton propre serveur de tuiles n'est qu'un modèle d'URL plus loin. Chaque couche a son propre fournisseur, donc une couche satellite et une couche plan peuvent coexister dans la même carte et l'utilisateur passe de l'une à l'autre sur la carte elle-même.
Sans clé : mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreet
Avec ta clé : mtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmooth
mtpCustom avec URLTemplate lit n'importe quel serveur {z}/{x}/{y}
L'attribution du fournisseur est dessinée sur la carte pour toi
ShowLayerSwitcher place un bouton de couches sur la carte
Des tuiles vectorielles qui restent nettes à toutes les tailles
Les tuiles raster deviennent floues quand on les agrandit, et chaque changement de style demande de nouvelles images au serveur. Avec les tuiles vectorielles, le contrôle reçoit la géométrie et dessine lui-même routes, eau, bâtiments et étiquettes, donc le texte reste net sur les écrans haute résolution et dans les images exportées. Pointe une couche vers un serveur de tuiles vectorielles Mapbox, laisse VectorStyleFile vide pour utiliser le style intégré, ou charge un fichier de style MapLibre ou Mapbox GL pour t'accorder à ta marque. Les couches vectorielles fonctionnent aussi bien dans le contrôle VCL que dans celui de FireMonkey.
mtsVectorHTTP lit un serveur de tuiles vectorielles, à partir de Delphi XE2
mtsVectorMBTiles lit un fichier MBTiles vectoriel local (pack hors ligne)
mtsVectorPMTiles lit des tuiles vectorielles depuis une archive PMTiles, un fichier local ou une URL (pack hors ligne)
TsgcMapVectorStyle charge un style avec LoadFromFile ou LoadFromJSON
Le décodage et le dessin se trouvent dans TsgcMapTileSource_MVT, en code Delphi pur
Les villes, les services publics et les organismes de cartographie publient l'occupation des sols, le cadastre et les orthophotos sous forme de services web OGC plutôt que de tuiles z/x/y. Mets TileSourceType à mtsWMS ou mtsWMTS et la couche demande ses images au service, comme calque transparent au-dessus d'un fond de carte ou comme fond de carte lui-même. Les lecteurs de capacités listent les couches qu'un service propose et configurent la couche pour toi, de sorte que tes utilisateurs choisissent une couche par son titre au lieu de saisir des paramètres de requête.
mtsWMS envoie des requêtes GetMap WMS 1.3.0 ou 1.1.1, avec Layers, Styles, ImageFormat et Transparent dans les options WMS de la couche
mtsWMTS lit les services KVP et REST via les options WMTS de la couche
TsgcMapWMSCapabilities et TsgcMapWMTSCapabilities chargent le document de capacités, et ApplyToLayer configure une couche à partir de lui
Un document d'exception du serveur arrive dans OnTileError avec son texte
En .NET, TileSourceType.Wms et TileSourceType.Wmts, avec WmsCapabilities et WmtsCapabilities
Dans toutes les éditions, l'édition Community gratuite comprise, à partir de Delphi 2009. La carte reste en Web Mercator : les couches WMS sont demandées en EPSG:3857, les couches WMTS exigent un jeu de matrices de tuiles Web Mercator comme GoogleMapsCompatible, et GetFeatureInfo n'est pas pris en charge.
Tuiles et données cartographiques Enregistrée uniquement
Continue de travailler quand le réseau a disparu
Un technicien de terrain dans un sous-sol, un navire en mer ou un réseau d'atelier ne peuvent pas dépendre d'un serveur de tuiles. sgcMaps lit les tuiles depuis le disque exactement comme depuis le web. Donne un CacheFolder à une couche et chaque tuile qu'elle récupère est conservée pour la prochaine exécution. Pour un pack hors ligne complet, TsgcMapTileDownloader récupère à l'avance une zone et une plage de zoom dans un dossier ou un fichier MBTiles.
mtsFolder lit un dossier z/x/y de tuiles PNG ou JPEG
mtsMBTiles lit un fichier MBTiles raster, à partir de Delphi XE7 (FireDAC SQLite)
CountTiles indique la taille d'un téléchargement avant de le lancer ; DelayMS et OnProgress le gardent poli et visible
Les téléchargements en masse doivent respecter les conditions du fournisseur : les tuiles OpenStreetMap sont réservées à la consultation interactive
Community lit les dossiers de tuiles z/x/y et conserve le CacheFolder par couche. Le téléchargeur de tuiles, les fichiers MBTiles et PMTiles font partie du pack hors ligne.
Tuiles et données cartographiques Enregistrée uniquement
Toute une région dans un seul fichier PMTiles
Une archive PMTiles contient une pyramide de tuiles complète dans un seul fichier que tu copies sur un portable ou que tu poses sur n'importe quel serveur web statique, sans serveur de tuiles à exploiter. sgcMaps lit l'archive depuis un fichier local, ou directement depuis un serveur web avec des requêtes HTTP par plage, et garde en cache les répertoires déjà lus, de sorte que seules les tuiles visibles transitent par le réseau.
mtsPMTiles pour les archives raster PNG et JPEG, mtsVectorPMTiles pour les archives Mapbox Vector Tile
TileSourcePath accepte un nom de fichier ou une URL http ou https
TsgcMapTileSource_PMTiles indique la plage de zoom, les limites, le centre et les métadonnées de l'archive
PMTiles version 3 ; les archives avec des tuiles WebP sont signalées comme non prises en charge
À partir de Delphi XE2, et dans le paquet enregistré esegece.sgcMaps pour .NET
PMTiles fait partie du pack hors ligne, comme MBTiles, il est donc dans l'édition enregistrée et pas dans l'édition Community gratuite.
Place tes propres données sur la carte, garde-les lisibles à chaque niveau de zoom et fais les calculs qui vont avec.
Marqueurs, formes et géométrie
Des milliers de marqueurs, toujours lisibles
Une flotte, un réseau de magasins ou un parc de capteurs se transforme vite en nuage d'épingles qui se chevauchent. Active le regroupement et les marqueurs proches fusionnent en une bulle numérotée qui se sépare de nouveau quand l'utilisateur zoome, recalculée à chaque niveau de zoom. Chaque marqueur porte sa propre bulle d'info, son infobulle et son icône, et les clics, glissements et clics sur un groupe arrivent sous forme d'événements, donc la carte fait partie de ton flux de travail au lieu d'être une image. Les marqueurs peuvent être ajoutés dans une boucle à partir de tes données ou importés depuis des fichiers GeoJSON, GPX et KML, et ClearMarkers les réinitialise en un appel.
MarkerOptions.Clustering avec GridSize, MinClusterSize et ZoomOnClick
PopupText, TooltipText et IconBitmap par marqueur
Événements OnMarkerClick, OnClusterClick et OnMarkerDragEnd
BeginUpdate et EndUpdate autour des chargements en masse ; FitToMarkers les cadre tous
MarkerAtScreen et ClusterAtScreen testent n'importe quel pixel
Itinéraires, zones et cartes de chaleur sur une même carte
La plupart des écrans cartographiques ont besoin de plus que des épingles : l'itinéraire de livraison prévu, la zone desservie par un dépôt, un rayon autour d'un client, l'origine des commandes. sgcMaps dessine tout cela comme des éléments du modèle de carte, dans les mêmes coordonnées que tes marqueurs. Les formes peuvent être rendues modifiables, pour qu'un utilisateur déplace à la souris les sommets d'une zone et que ton code soit prévenu à la fin de la modification. Les étiquettes placent du texte à une coordonnée avec leur propre police, couleur et fond, ce qui garde les noms de zones et les numéros d'itinéraires attachés à la carte.
AddPolyline avec des lignes Dashed et Geodesic
AddPolygon avec AddHole, plus AddRectangle, AddCircle (RadiusMeters) et AddLabel
Les formes Editable signalent les changements via OnShapeEdited
TsgcMapHeatmap prend des points pondérés avec AddPoint et un MaxIntensity
Ce véhicule est-il dans la zone ? À quelle distance se trouve le dépôt le plus proche ? Quel point de l'itinéraire est le plus proche du client ? Ces questions reviennent dans toute application cartographique et il est facile de se tromper près des pôles ou sur de longues distances. L'unité de géométrie y répond sur la sphère WGS84 avec des fonctions simples que tu peux aussi appeler depuis un service, sans aucune carte. Les fonctions prennent de simples enregistrements TsgcMapCoord, et sgcMapLatLonToPixel et sgcMapPixelToLatLon convertissent entre coordonnées d'écran et coordonnées du monde quand tu dessines tes propres surcouches.
sgcMapDistance en mètres, sgcMapInitialBearing et sgcMapDestinationPoint
sgcMapPointInPolygon et sgcMapPointInPolygonWithHoles pour les géorepérages
sgcMapNearestPointOnPolyline aimante une position sur un itinéraire
sgcMapGeodesicInterpolate et sgcMapSimplify pour des lignes lisses et légères
Trouve des adresses et planifie des itinéraires avec des fournisseurs en ligne, ou entièrement hors ligne, sans clé d'API.
Recherche et itinéraires
Géocodage, itinéraires et lieux derrière une seule API
Chaque fournisseur de géocodage et d'itinéraires a son propre format REST, ses clés et ses particularités. Les composants de service les cachent : tu choisis un fournisseur, tu définis ta clé quand il en demande une et tu appelles les mêmes méthodes, en synchrone ou en asynchrone. Passer d'un fournisseur à un autre est un changement de propriété, pas une réécriture, et les résultats reviennent sous forme d'objets Delphi prêts à être placés sur la carte. Tous les composants partagent la classe de base TsgcMapService, donc ApiKey, UserAgent et LastError fonctionnent de la même façon pour chaque fournisseur.
Itinéraires et recherche d'adresses sans internet et sans clé
Le calcul d'itinéraires en ligne échoue exactement là où les applications de terrain sont utilisées, et chaque requête peut coûter de l'argent. Le calculateur hors ligne calcule sur l'appareil des itinéraires en voiture, à vélo et à pied à partir d'un graphe routier construit une seule fois depuis un extrait OpenStreetMap. Le géocodeur hors ligne recherche des noms de lieux et géocode à l'inverse un clic à partir d'un index GeoNames dans SQLite. Tous deux fonctionnent sans réseau, sans compte et sans frais par requête. Le calculateur et le géocodeur sont des composants non visuels, donc un service Windows ou un outil console peut répondre à des demandes d'itinéraires et d'adresses sans aucune carte à l'écran.
TsgcMapOfflineRouter répond à GetRoute à partir d'un graphe construit par TsgcMapRouteGraphBuilder depuis un .osm.pbf
sgcMapAddRouteToPolylines dessine le résultat sur la carte
TsgcMapOfflineGeocoder avec ReverseGeocode, sur un index créé par TsgcMapGeoIndexBuilder
Des outils en ligne de commande pour construire le graphe et l'index se trouvent dans le dossier Tools
Community utilise les services en ligne ; le calculateur d'itinéraires et le géocodeur hors ligne font partie du pack hors ligne.
Échange des données géographiques avec d'autres outils, génère des cartes là où il n'y a pas d'écran et emporte la carte sur un téléphone.
Fichiers, rendu et mobile
Ouvre les fichiers que tes utilisateurs ont déjà
Les clients envoient des traces d'une montre GPS, des zones dessinées dans un outil SIG ou un KML provenant d'un autre système. sgcMaps lit et écrit GeoJSON, GPX et KML directement dans le modèle de carte, donc un import est un appel et un export en est un autre. Les traces GPX arrivent avec leurs statistiques et peuvent être colorées selon l'altitude, et un lecteur en flux parcourt de gros extraits OpenStreetMap sans les charger en mémoire. Les exports utilisent les mêmes fonctions en sens inverse, donc les zones qu'un utilisateur a dessinées sur la carte peuvent être enregistrées en GeoJSON ou KML et ouvertes dans d'autres outils SIG.
sgcMapLoadGeoJSONFile et sgcMapSaveGeoJSONFile, à partir de Delphi XE6
TsgcMapGPX avec TrackStats (TotalAscent, TotalDescent) et ColorByElevation
sgcMapLoadKMLFile et sgcMapSaveKMLFile
Le lecteur OpenStreetMap traite les fichiers .osm.pbf et XML en flux via des événements
sgcMapGeoJSONAsText renvoie le GeoJSON de la carte sous forme de chaîne
Les données géographiques publiques sont encore souvent livrées sous forme de shapefiles Esri, et les bases de données spatiales échangent la géométrie sous forme de Well Known Text. TsgcMapShapefile importe les points, les lignes et les polygones d'un shapefile avec sa table d'attributs, de sorte que chaque marqueur peut afficher l'enregistrement dont il provient. WKT et l'EWKT écrit par PostGIS sont lus et écrits, ce qui est le moyen le plus simple de déplacer une zone entre la carte et une colonne de géométrie de ta base de données.
LoadFromFile lit le .shp avec ses fichiers .shx, .dbf, .prj et .cpg ; OnItem reçoit chaque ligne d'attributs et LabelField définit le texte de la bulle des points
Un .prj en degrés WGS84, ETRS89 ou NAD83, ou en Web Mercator, se charge directement, et un fichier sans .prj est lu comme du WGS84
Toute autre projection déclenche une erreur claire, sauf si ton gestionnaire OnTransform convertit les coordonnées
sgcMapLoadWKT et TsgcMapWKT lisent POINT, LINESTRING, POLYGON, leurs formes MULTI et GEOMETRYCOLLECTION, en degrés ou en mètres Web Mercator, et AsText réécrit la carte
Dans toutes les éditions à partir de Delphi 7 ; en .NET, ShapefileFormat et WktFormat avec un rappel Transform
Des bons de livraison avec l'itinéraire, un rapport quotidien avec les incidents du jour, une vignette pour une page web : beaucoup de cartes ne s'affichent jamais dans une fenêtre. Le même contrôle produit un PNG ou un bitmap sans être visible, depuis une application console ou un service Windows. Tu peux vérifier que toutes les tuiles sont arrivées avant d'envoyer l'image, pour qu'un serveur de tuiles lent ne finisse jamais en carré gris dans un document client. Le rendu côté serveur utilise les mêmes couches, marqueurs et formes que le contrôle interactif, donc une carte conçue à l'écran a le même aspect dans le PNG.
SaveToPNG et SaveToPNGFile, à partir de Delphi 2009
RenderToBitmap et SaveToBMPFile pour ton propre pipeline
LastRenderMissingTiles signale les tuiles qui n'étaient pas disponibles
En .NET, MapView.RenderToPng fonctionne aussi sous Linux
Un répartiteur planifie sur un poste Windows et le conducteur suit le plan sur un téléphone. TsgcFMXMap apporte le même modèle, les mêmes couches, marqueurs, formes et services à FireMonkey sous Windows, macOS, iOS et Android, donc le code écrit pour la carte VCL se réutilise. TsgcMapLocation lit la position de l'appareil, pour que la carte se centre sur l'utilisateur et le suive. Le cache de tuiles par couche fonctionne aussi sur mobile, donc un téléphone continue d'afficher les zones déjà chargées.
TsgcFMXMap sous Windows à partir de Delphi XE6, et sous macOS, iOS et Android à partir de Delphi 10.4 (macOS ARM à partir de Delphi 11), avec les mêmes collections que TsgcVCLMap
TsgcMapLocation sous Windows, Android, iOS et macOS
La démo FMX montre les tuiles, les marqueurs et la position dans une seule fiche, et la démo FMX Mobile est conçue pour les téléphones et les tablettes
Le noyau indépendant du framework se compile aussi pour Linux 64 bits à partir de Delphi 10.4, pour les applications console et serveur qui utilisent les sources de tuiles, les formats de fichiers et les données hors ligne
Trois paquets d'exécution, sgcMaps (le noyau), sgcMapsVCL et sgcMapsFMX, de sorte qu'une application FireMonkey ne charge plus les paquets VCL
Les versions minimales de Delphi par fonctionnalité sont listées dans la rubrique d'installation
TsgcWpfMap et TsgcAvaloniaMap apportent le moteur de carte .NET à WPF et à Avalonia 12 avec les fonctionnalités du contrôle WinForms : déplacement et zoom à la souris, au toucher et au clavier, couches, marqueurs, formes, impression, export PDF et UI Automation. Les couches et les marqueurs se déclarent en XAML sous le préfixe sgc, et une collection de ton modèle de vue devient des marqueurs via ItemsSource, de sorte qu'ajouter un magasin à la collection le place sur la carte et que faire glisser son marqueur réécrit la nouvelle position.
LatitudeMember, LongitudeMember, TooltipMember, PopupMember, ColorMember et DraggableMember associent tes propriétés aux marqueurs
SelectedItem, Zoom, Bearing, CenterLatitude et CenterLongitude se lient dans les deux sens
Les couleurs s'écrivent en XAML sous forme de texte #AARRGGBB ou #RRGGBB
NuGet esegece.sgcMaps.Wpf (net8.0-windows à net10.0-windows) et esegece.sgcMaps.Avalonia (net8.0 à net10.0), tous deux avec un paquet Community gratuit
Les projets WpfDemo et AvaloniaDemo montrent la même fenêtre dans les deux frameworks
L'aperçu montre exactement ce que reçoivent l'imprimante et le PDF.
Imprimer, aperçu et PDF
Imprimer la vue de la carte ou exporter un PDF accessible
La carte s'imprime sur une page sous forme d'image de la vue actuelle : la même zone que le contrôle, avec son centre, son zoom, les tuiles, les couches, les marqueurs et les formes. L'échelle graphique et l'attribution sont imprimées, pas les boutons de zoom, le sélecteur de couches ni la boussole, et l'impression ne déplace jamais la vue.
Print affiche la boîte de dialogue d'impression ou imprime directement sur l'imprimante par défaut, et ShowPrintPreview ouvre un aperçu avec navigation entre les pages, zoom, mise en page, impression et export PDF
PrintSettings contient le papier, l'orientation, les marges, l'échelle et le texte de l'en-tête et du pied de page, et l'imprimante, l'aperçu et le PDF les utilisent tous
ExportToPDF écrit la page sous forme d'une seule image balisée, à 192 dpi par défaut, avec un texte alternatif qui donne le centre, le zoom et le nombre de couches et de marqueurs
PDFALevel de TsgcUIPDFOptions ajoute PDF/A-2a ou PDF/A-3a pour l'archivage, seul ou avec PDF/UA
L'impression et l'aperçu sont dans toutes les éditions, l'édition Community gratuite comprise, sur VCL, FireMonkey, WinForms, WPF et Avalonia. Dans FireMonkey, l'impression fonctionne sous Windows et macOS, et l'aperçu et l'export PDF sur toutes les plateformes. L'export PDF nécessite le pont sgcUIPDF et un sgcPDF sous licence (le paquet NuGet esegece.sgcUICore.sgcPDF en .NET), il n'est donc pas dans l'édition Community.
UI Automation pour les lecteurs d'écran et le clavier, sans configuration.
Accessibilité
Une carte que le clavier peut atteindre et qu'UI Automation expose
sgcMaps expose la carte à Microsoft UI Automation avec une alternative textuelle, les marqueurs sous forme de liste et les calques sous forme de liste, où chaque calque indique s'il est visible. Les marqueurs sont accessibles au clavier.
Les flèches font défiler la carte, les touches plus et moins zooment, et Début revient à la vue de départ
Page précédente et Page suivante passent au marqueur précédent ou suivant, Entrée active le marqueur qui a le focus et Échap efface le focus du marqueur
La carte affiche un anneau de focus visible tant qu'elle a le focus
En .NET, les contrôles de carte WinForms, WPF et Avalonia exposent la même structure UI Automation et le même clavier
L'accessibilité est activée par défaut dans toutes les éditions, l'édition Community gratuite comprise, sur VCL dans toutes les versions de Delphi et C++Builder de Delphi 7 à Delphi 13, sur FireMonkey sous Windows, et sur WinForms, WPF et Avalonia. Dans Delphi et C++Builder, AccessibleName et AccessibleDescription définissent le nom et la description exposés à UI Automation, et en .NET le nom accessible et le texte d'aide standard de chaque framework font de même. Voir les rapports de conformité d'accessibilité, qui ne couvrent pas encore les nouveaux contrôles de carte WPF et Avalonia. L'image de la carte n'est décrite que par son centre et son zoom, et le moteur de rendu de la carte ne suit pas le contraste élevé de Windows, car l'image de la carte est constituée de tuiles du fournisseur.
Polylignes, polygones et cartes de chaleur dessinés sur la même carte.
Une zone, quatre fournisseurs sans clé, chacun avec sa propre attribution.
CAS D'USAGE
Qui construit avec sgcMaps
Service sur le terrain et logistique
Les techniciens et les conducteurs ont besoin de la carte là où la couverture est mauvaise. Prépare à l'avance les tuiles d'une région, calcule des itinéraires en voiture sur l'appareil avec le calculateur hors ligne et trouve des adresses avec le géocodeur hors ligne. De retour au bureau, le même code dessine les itinéraires planifiés et les zones de livraison, et génère un PNG de chaque itinéraire pour le bon de livraison.
Une salle de contrôle surveille des centaines de véhicules, machines ou capteurs à la fois. Le regroupement garde la carte lisible à l'échelle d'un pays et se sépare en épingles individuelles à l'échelle d'une rue. Une carte de chaleur montre où se concentrent les incidents, les contrôles de géorepérage avec point dans un polygone déclenchent des alertes, et les événements de clic sur un marqueur ouvrent la fiche de l'actif dans tes propres fiches.
Les outils de planification, les applications de sport et les logiciels de relevés vivent de traces GPX, de couches KML et de zones GeoJSON. sgcMaps importe et exporte les trois, affiche les statistiques de trace et les couleurs d'altitude, et place le résultat sur un fond de carte topographique. Le contrôle FireMonkey apporte les mêmes fonctionnalités à une tablette ou à un téléphone sur le terrain. Les statistiques de trace donnent d'un coup d'œil le dénivelé positif et négatif total d'un itinéraire.
Un calque WMS et une importation de shapefile avec ses attributs en Delphi, et une fenêtre WPF avec la carte, une couche et un marqueur déclarés en XAML.
Un calque WMS transparent avec son propre cache de tuiles, et un shapefile dont les parcs sont remplis en vert à partir de la table d'attributs. Les deux fonctionnent dans toutes les éditions.
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;
Les couches et les marqueurs d'un TsgcWpfMap se déclarent en XAML sous le préfixe sgc. Le code-behind ajoute un cache de tuiles, une ligne et trois événements.
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}";
}
}
}
Onze démos Delphi et huit démos .NET sont livrées avec sgcMaps. Il n'y a pas de projets de démo C++ Builder.
Enregistrée uniquement OfflineMap
Tuiles dossier, MBTiles et en ligne, marqueurs et formes, plus import GeoJSON, GPX et KML.
MapFeatures
Fournisseurs et clés d'API, regroupement de marqueurs, édition de formes, cartes de chaleur et export d'images.
Services
Recherche de lieux, géocodage, itinéraires, altitude, fuseaux horaires et position de l'appareil avec les fournisseurs en ligne. Delphi XE8 et suivants.
Enregistrée uniquement OfflineServices
Construis un index GeoNames et un graphe routier OpenStreetMap, puis recherche des lieux et calcule des itinéraires en voiture, à vélo ou à pied sans réseau.
StaticRender
Un programme console qui génère une carte dans un fichier PNG ou BMP sans fenêtre.
FMX
La carte FireMonkey avec tuiles, marqueurs et position de l'appareil, pour Windows, macOS, iOS et Android. Delphi XE6 et suivants.
VectorTiles
Un serveur de tuiles vectorielles dessiné avec le style intégré ou un fichier de style de ton choix, avec des étiquettes nettes à chaque zoom.
FMXMobile
La carte FireMonkey conçue pour les téléphones et les tablettes : déplacement à un doigt, zoom par pincement, grands boutons de zoom, ta position avec un cercle de précision et une liste de lieux. Delphi 10.4 et versions ultérieures.
OGCServices
Charge un document de capacités WMS ou WMTS depuis une URL ou un fichier, liste les couches et ajoute celle que tu choisis comme calque au-dessus d'OpenStreetMap, avec un curseur d'opacité. Delphi 2009 et versions ultérieures.
Enregistrée uniquement PMTiles
Ouvre une archive PMTiles raster ou vectorielle depuis un fichier ou une URL, affiche son en-tête et ses métadonnées, et l'ajoute comme couche centrée sur l'archive. Delphi XE2 et versions ultérieures.
ShapefileWKT
Importe un shapefile avec sa table d'attributs, affiche l'enregistrement d'un marqueur sur lequel on clique, et importe et exporte du WKT.
WinFormsDemo
Le SgcMapControl .NET dans une fenêtre WinForms avec fournisseurs, marqueurs et formes.
WpfDemo
La carte WPF déclarée en XAML : fonds de carte et marqueurs dans le balisage, magasins liés comme marqueurs avec ItemsSource, curseurs de zoom et d'orientation, impression et export PDF.
AvaloniaDemo
La même fenêtre avec le contrôle de carte Avalonia 12 et des liaisons compilées.
OgcServicesDemo
Le contrôle de carte WinForms avec un fond OpenStreetMap et un calque issu d'un service WMS ou WMTS : charge un document de capacités depuis une URL ou un fichier, liste les couches, ajoute celle que tu choisis avec un curseur d'opacité et affiche les erreurs de tuiles.
Enregistrée uniquement PMTilesDemo
Le contrôle de carte WinForms avec une couche issue d'une archive PMTiles raster ou vectorielle, ouverte depuis un fichier ou une URL, avec son en-tête et ses métadonnées et la carte centrée sur l'archive.
ShapefileWktDemo
Le contrôle de carte WinForms qui importe un shapefile avec sa table d'attributs et l'enregistrement d'un marqueur sur lequel on clique, plus l'import et l'export WKT des calques.
Enregistrée uniquement OfflineDemo
Le paquet .NET hors ligne : tuiles, itinéraires et géocodage hors ligne à partir de fichiers de données locaux.
ConsoleRenderDemo
Une console .NET qui génère une carte en PNG avec le MapView sans interface, sous Windows ou Linux.
Démos compilées
Des exécutables prêts à lancer pour chaque produit sgcUI, rien à installer.
Cinq démos QuickStart pour Delphi (VCL) sont livrées dans Demos\Maps\00.QuickStart. Le guide PDF les parcourt pas à pas : une première carte avec des marqueurs, des marqueurs et des étiquettes ajoutés dans le code, les formes, les événements de la carte, et un localisateur de magasins.
L'édition .NET Community gratuite (NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community, esegece.sgcMaps.Avalonia.Community) a toutes les fonctionnalités sauf le pack hors ligne. Le paquet esegece.sgcMaps.Offline est réservé à l'édition enregistrée. Un projet référence soit les paquets Community, soit les paquets enregistrés, jamais les deux.
Fonctionnalité
Community (gratuite)
Enregistrée
Contrôles de carte VCL, FireMonkey, WinForms, WPF et Avalonia
✓
✓
Tile providers, HTTP and vector tile servers
✓
✓
Couches WMS et WMTS
✓
✓
z/x/y tile folders and the per layer tile cache
✓
✓
Markers, clustering, shapes, labels and heatmaps
✓
✓
Geometry functions
✓
✓
GeoJSON, GPX and KML import and export
✓
✓
Import de shapefiles, import et export WKT
✓
✓
Online geocoding, directions, places, elevation and time zones
✓
✓
Static rendering to PNG
✓
✓
Tile downloader for offline packs
−
✓
Fichiers MBTiles et PMTiles (raster et vectoriels)
−
✓
Offline router and offline geocoder
−
✓
PLATEFORMES
Frameworks et plateformes pris en charge
Composants de sgcMaps
TsgcVCLMap et TsgcFMXMap
Les contrôles de carte pour VCL et FireMonkey, plus un contrôle Lazarus LCL qui lit des tuiles depuis le disque.
Collections du modèle
Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels et Heatmaps, partagées par tous les frameworks.
Services en ligne
TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation et TsgcMapTimeZone.
Outils hors ligne
TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder et TsgcMapTileDownloader.
Formats SIG et services OGC
TsgcMapShapefile, TsgcMapWKT, TsgcMapWMSCapabilities, TsgcMapWMTSCapabilities et TsgcMapTileSource_PMTiles.
TsgcMapLocation et fonctions de géométrie
Position de l'appareil, et sgcMapDistance, relèvement, point de destination, interpolation géodésique, point dans un polygone et simplification de lignes.
Cartes .NET
SgcMapControl pour WinForms, TsgcWpfMap pour WPF, TsgcAvaloniaMap pour Avalonia 12, et MapView, le moteur sans interface qui génère du PNG, aussi sous Linux.
Cible
Composant
Plateformes
Delphi 7 à 13, VCL
TsgcVCLMap et le modèle
Win32, Win64 à partir de XE2 et ARM64EC dans Delphi 13
Delphi XE6 à 13, FireMonkey
TsgcFMXMap
Windows à partir de XE6 ; macOS, iOS et Android à partir de Delphi 10.4 (macOS ARM à partir de Delphi 11) ; position de l'appareil sous Windows, Android, iOS et macOS
Delphi 10.4 à 13, Linux 64 bits
Le noyau indépendant du framework, sans contrôle de carte
Sources de tuiles, services, formats de fichiers et données hors ligne dans les applications console et serveur
C++ Builder 2007 à 13
TsgcVCLMap, TsgcFMXMap à partir de XE6, et le modèle
Windows uniquement : Win32, Win64 à partir de XE3 et Win64x dans C++ Builder 13, avec des en-têtes .hpp générés et des bibliothèques statiques
Lazarus
Contrôle de carte LCL
Tuiles depuis le disque uniquement, il ne peut pas télécharger de tuiles
WinForms et WPF (net8.0-windows, net9.0-windows, net10.0-windows), Avalonia 12 (net8.0, net9.0, net10.0), PNG sans interface sous Windows et Linux
Paquets Delphi : sgcMaps contient le noyau indépendant du framework, sgcMapsVCL la carte VCL et sgcMapsFMX la carte FireMonkey, avec les paquets de conception dclsgcMaps et dclsgcMapsFMX. Un projet compilé avec des paquets d'exécution qui liste sgcMaps ajoute sgcMapsVCL ou sgcMapsFMX. Voir Paquets et Plateformes.
FAQ
Foire aux questions
Non. Les tuiles, les marqueurs et les formes sont dessinés nativement par le contrôle, donc il n'y a ni vue web, ni bibliothèque JavaScript, ni environnement d'exécution de navigateur à déployer.
Pas pour OpenStreetMap, OpenTopoMap et les tuiles Esri, ni pour le calculateur d'itinéraires et le géocodeur hors ligne. Les tuiles MapTiler, Thunderforest et Stadia, ainsi que les fournisseurs commerciaux de géocodage et d'itinéraires, utilisent ta propre clé. Chaque fournisseur garde ses propres conditions d'utilisation, que ton application doit respecter.
Oui. Les tuiles peuvent venir de dossiers z/x/y, d'un cache par couche, de fichiers MBTiles ou d'archives PMTiles, les itinéraires de TsgcMapOfflineRouter et la recherche d'adresses de TsgcMapOfflineGeocoder. MBTiles, PMTiles, le téléchargeur de tuiles, le calculateur d'itinéraires et le géocodeur hors ligne font partie du pack hors ligne de l'édition enregistrée.
GeoJSON, GPX, KML et WKT avec EWKT, en import et en export, et les shapefiles Esri avec leurs attributs en import, avec les statistiques de trace GPX et les couleurs d'altitude. Un lecteur en flux traite aussi les fichiers OpenStreetMap .osm.pbf et XML, ce qui permet de construire le graphe routier hors ligne. Voir Formats de fichiers, Shapefile et WKT.
Le modèle, le contrôle VCL, les shapefiles et WKT fonctionnent à partir de Delphi 7 et C++ Builder 2007. Certaines fonctionnalités exigent une version supérieure : sortie PNG, serveurs de tuiles, WMS et WMTS à partir de Delphi 2009, tuiles vectorielles, PMTiles et calculateur d'itinéraires hors ligne à partir de XE2, FireMonkey sous Windows et GeoJSON à partir de XE6, MBTiles et géocodeur hors ligne à partir de XE7, services en ligne à partir de XE8. FireMonkey sous macOS, iOS et Android, ainsi que les unités du noyau sous Linux 64 bits, nécessitent Delphi 10.4 ou une version plus récente.
Oui. Une couche avec TileSourceTypemtsWMS ou mtsWMTS demande ses images à un service WMS 1.1.1 ou 1.3.0, ou à un service WMTS en encodage KVP ou REST, et les lecteurs de capacités configurent la couche à partir de la description du service. La carte est en Web Mercator, donc les couches WMS sont demandées en EPSG:3857 et les services WMTS exigent un jeu de matrices de tuiles Web Mercator. WMS et WMTS sont dans toutes les éditions, Community comprise. Voir WMS et WMTS.
Oui. TsgcWpfMap (NuGet esegece.sgcMaps.Wpf) et TsgcAvaloniaMap (esegece.sgcMaps.Avalonia, Avalonia 12) hébergent le même moteur que le SgcMapControl WinForms. Les couches et les marqueurs peuvent être déclarés en XAML, les marqueurs liés à une collection avec ItemsSource, et la vue liée dans les deux sens. Les deux sont aussi dans l'édition Community gratuite. Voir Démarrage rapide WPF et Démarrage rapide Avalonia.
Les projets de démo sont uniquement en Delphi, mais les composants s'installent dans C++ Builder 2007 à 13 et fonctionnent de la même façon. L'onglet C++ Builder de la section de code ci-dessus montre la même carte construite avec les en-têtes générés.
Oui. L'édition Community est gratuite pour les particuliers et les organisations dont le chiffre d'affaires brut annuel est inférieur à 1 M EUR et qui comptent au maximum 5 développeurs. Elle a toutes les fonctionnalités sauf le pack hors ligne. En .NET, les paquets sont esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community et esegece.sgcMaps.Avalonia.Community. WMS, WMTS, les shapefiles, WKT et les contrôles WPF et Avalonia sont aussi dans Community. Les organisations plus grandes ont besoin d'une licence enregistrée.
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement
Essaie sgcMaps dès aujourd'hui
L'essai sgcUI inclut sgcMaps avec le pack hors ligne et tous les autres produits sgcUI. L'édition .NET Community est gratuite sur NuGet.