Delphi, C++ Builder i .NET Część sgcUI

sgcMaps, natywne mapy dla Delphi, C++ Builder i .NET

Umieść prawdziwą mapę w swojej aplikacji bez kontrolki przeglądarki i bez linijki JavaScriptu. sgcMaps sam rysuje kafelki rastrowe i wektorowe, pokazuje tysiące zgrupowanych znaczników, trasy i strefy, geokoduje adresy i działa dalej offline z lokalnymi kafelkami i routerem offline.

VCL, FireMonkey, Lazarus, WinFormsBez kontrolki przeglądarki, bez JavaScriptuBezpłatna edycja .NET CommunityW sgcUI Enterprise
TsgcVCLMap pokazujący centrum Madrytu z kafelków wektorowych z czerwonymi i niebieskimi znacznikami lokalizacji

Wszystko, czego potrzebuje aplikacja z mapą

Trzynaście funkcji, każda z prawdziwym API i tematem pomocy.

Kafelki i dane mapy

Kontrolka mapy sama rysuje każdy kafelek, z serwera kafelków, źródła wektorowego lub plików na dysku.

Prawdziwa mapa w twoim formularzu, bez przeglądarki w środku

Kafelki i dane mapy

Prawdziwa mapa w twoim formularzu, bez przeglądarki w środku

Większość komponentów map opakowuje widok webowy i bibliotekę JavaScript, więc twoja aplikacja desktopowa musi dostarczać przeglądarkę. sgcMaps tego nie robi. TsgcVCLMap i TsgcFMXMap pobierają, buforują i rysują kafelki na własnym płótnie, obsługują powiększanie kółkiem myszy i przeciąganie, a zdarzenia zgłaszają jak zwykłe zdarzenia Delphi. Twoja mapa jest natywną kontrolką jak każda inna: dokuje się, korzysta z motywu formularza i debuguje się jak reszta twojego kodu. Nie ma dodatkowego procesu do wdrożenia ani zabezpieczenia, a mapa zachowuje się tak samo na każdej maszynie, na której działa twoja aplikacja.

  • Kolekcja Layers zawiera jeden lub więcej elementów TsgcMapLayer, każdy z własnym TileSourceType
  • TsgcFMXMap działa w systemach Windows, macOS, iOS i Android od Delphi XE6
  • Kontrolka Lazarus LCL pokazuje kafelki z dysku
  • W .NET SgcMapControl dla WinForms i MapView bez interfejsu współdzielą jeden silnik
  • Od prawej do lewej dla arabskiego i hebrajskiego: przyciski powiększania, przełącznik warstw, kompas, skala i informacja o źródle przechodzą na przeciwną stronę, a mapa zachowuje swoją orientację geograficzną
Przeczytaj temat pomocy
Wybierz dostawcę kafelków jedną właściwością

Kafelki i dane mapy

Wybierz dostawcę kafelków jedną właściwością

Wybór mapy bazowej nie powinien oznaczać czytania dokumentacji serwera kafelków. Ustaw Provider w warstwie i wywołaj sgcMapApplyProvider: warstwa dostaje szablon URL, maksymalne powiększenie i tekst atrybucji tego dostawcy. OpenStreetMap, OpenTopoMap, Esri World Imagery i Esri World Street działają bez klucza. MapTiler, Thunderforest i Stadia wymagają twojego własnego klucza API. Twój własny serwer kafelków jest o jeden szablon URL dalej. Każda warstwa ma własnego dostawcę, więc warstwa satelitarna i uliczna mogą być na jednej mapie, a użytkownik przełącza je na samej mapie.

  • Bez klucza: mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreet
  • Z twoim kluczem: mtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmooth
  • mtpCustom z URLTemplate czyta dowolny serwer {z}/{x}/{y}
  • Atrybucja dostawcy jest rysowana na mapie za ciebie
  • ShowLayerSwitcher umieszcza na mapie przycisk warstw
Przeczytaj temat pomocy
Kafelki wektorowe, które pozostają ostre w każdym rozmiarze

Kafelki i dane mapy

Kafelki wektorowe, które pozostają ostre w każdym rozmiarze

Kafelki rastrowe się rozmywają przy skalowaniu, a każda zmiana stylu oznacza nowe obrazy z serwera. Przy kafelkach wektorowych kontrolka dostaje geometrię i sama rysuje drogi, wodę, budynki i etykiety, więc tekst pozostaje wyraźny na ekranach o wysokim DPI i w eksportowanych obrazach. Wskaż warstwie serwer Mapbox Vector Tile i zostaw VectorStyleFile puste, aby użyć wbudowanego stylu, albo wczytaj plik stylu MapLibre lub Mapbox GL, aby dopasować go do swojej marki. Warstwy wektorowe działają tak samo w kontrolce VCL i FireMonkey.

  • mtsVectorHTTP czyta serwer kafelków wektorowych, od Delphi XE2
  • mtsVectorMBTiles czyta lokalny plik wektorowy MBTiles (pakiet offline)
  • TsgcMapVectorStyle wczytuje styl przez LoadFromFile lub LoadFromJSON
  • Dekodowanie i rysowanie są w TsgcMapTileSource_MVT, w zwykłym kodzie Delphi
Przeczytaj temat pomocy

Kafelki i dane mapy Tylko zarejestrowana

Pracuj dalej, gdy sieci nie ma

Technik w piwnicy, statek na morzu czy sieć hali produkcyjnej nie mogą zależeć od serwera kafelków. sgcMaps czyta kafelki z dysku dokładnie tak, jak czyta je z sieci. Nadaj warstwie CacheFolder, a każdy pobrany kafelek zostanie zachowany na następne uruchomienie. Dla kompletnego pakietu offline TsgcMapTileDownloader pobiera obszar i zakres powiększenia z wyprzedzeniem do folderu lub pliku MBTiles.

  • mtsFolder czyta folder z/x/y z kafelkami PNG lub JPEG
  • mtsMBTiles czyta rastrowy plik MBTiles, od Delphi XE7 (FireDAC SQLite)
  • CountTiles podaje rozmiar pobierania, zanim je zaczniesz; DelayMS i OnProgress utrzymują je grzeczne i widoczne
  • Pobieranie hurtowe musi respektować warunki dostawcy: kafelki OpenStreetMap służą tylko do interaktywnego przeglądania

Community czyta foldery kafelków z/x/y i zachowuje CacheFolder każdej warstwy. Pobieranie kafelków i pliki MBTiles należą do pakietu offline.

Przeczytaj temat pomocy

Znaczniki, kształty i geometria

Umieść swoje dane na mapie, zachowaj ich czytelność na każdym poziomie powiększenia i wykonaj stojące za nimi obliczenia.

Znaczniki, kształty i geometria

Tysiące znaczników, nadal czytelnych

Flota, sieć sklepów czy siatka czujników szybko zamienia się w chmurę nakładających się pinezek. Włącz grupowanie, a pobliskie znaczniki łączą się w jedną ponumerowaną bańkę, która ponownie się rozdziela przy powiększaniu, przeliczana na każdym poziomie powiększenia. Każdy znacznik ma własne okno, podpowiedź i ikonę, a kliknięcia, przeciągnięcia i kliknięcia grup docierają jako zdarzenia, więc mapa staje się częścią twojego procesu, a nie obrazkiem. Znaczniki można dodawać w pętli z twoich danych lub importować z plików GeoJSON, GPX i KML, a ClearMarkers resetuje je jednym wywołaniem.

  • MarkerOptions.Clustering z GridSize, MinClusterSize i ZoomOnClick
  • PopupText, TooltipText i IconBitmap dla każdego znacznika
  • Zdarzenia OnMarkerClick, OnClusterClick i OnMarkerDragEnd
  • BeginUpdate i EndUpdate wokół ładowania zbiorczego; FitToMarkers obejmuje je wszystkie
  • MarkerAtScreen i ClusterAtScreen testują trafienie w dowolny piksel
Przeczytaj temat pomocy
Trasy, strefy i mapy cieplne na jednej mapie

Znaczniki, kształty i geometria

Trasy, strefy i mapy cieplne na jednej mapie

Większość ekranów z mapą potrzebuje czegoś więcej niż pinezek: zaplanowanej trasy dostawy, obszaru obsługiwanego przez magazyn, promienia wokół klienta, skąd pochodzą zamówienia. sgcMaps rysuje to wszystko jako elementy modelu mapy, w tych samych współrzędnych co twoje znaczniki. Kształty można uczynić edytowalnymi, więc użytkownik może przeciągać wierzchołki strefy myszą, a twój kod dostaje informację, gdy edycja się kończy. Etykiety umieszczają tekst we współrzędnej z własną czcionką, kolorem i tłem, co utrzymuje nazwy stref i numery tras przy mapie.

  • AddPolyline z liniami Dashed i Geodesic
  • AddPolygon z AddHole, a także AddRectangle, AddCircle (RadiusMeters) i AddLabel
  • Kształty Editable zgłaszają zmiany przez OnShapeEdited
  • TsgcMapHeatmap przyjmuje punkty z wagami przez AddPoint oraz MaxIntensity
Przeczytaj temat pomocy

Znaczniki, kształty i geometria

Matematyka geograficzna jest już napisana

Czy ten pojazd jest wewnątrz strefy? Jak daleko jest najbliższy magazyn? Który punkt trasy jest najbliższy klientowi? Te pytania pojawiają się w każdej aplikacji z mapą i łatwo w nich o błąd blisko biegunów lub na dużych dystansach. Jednostka geometrii odpowiada na nie na sferze WGS84 zwykłymi funkcjami, które możesz też wywołać z usługi, bez żadnej mapy. Funkcje przyjmują zwykłe rekordy TsgcMapCoord, a sgcMapLatLonToPixel i sgcMapPixelToLatLon przeliczają między współrzędnymi ekranu i świata, gdy rysujesz własne nakładki.

  • sgcMapDistance w metrach, sgcMapInitialBearing i sgcMapDestinationPoint
  • sgcMapPointInPolygon i sgcMapPointInPolygonWithHoles dla geofence
  • sgcMapNearestPointOnPolyline przyciąga pozycję do trasy
  • sgcMapGeodesicInterpolate i sgcMapSimplify dla gładkich, lekkich linii
Przeczytaj temat pomocy

Wyszukiwanie i wyznaczanie tras

Znajdź adresy i zaplanuj trasy z dostawcami online albo w pełni offline, bez klucza API.

Wyszukiwanie i wyznaczanie tras

Geokodowanie, wskazówki dojazdu i miejsca za jednym API

Każdy dostawca geokodowania i tras ma własny format REST, klucze i dziwactwa. Komponenty usług je ukrywają: wybierasz dostawcę, ustawiasz klucz, gdy jest potrzebny, i wywołujesz te same metody, synchronicznie lub asynchronicznie. Przejście od jednego dostawcy do drugiego to zmiana właściwości, a nie przepisywanie, a wyniki wracają jako obiekty Delphi gotowe do umieszczenia na mapie. Każdy komponent dziedziczy po klasie bazowej TsgcMapService, więc ApiKey, UserAgent i LastError działają tak samo dla każdego dostawcy.

  • TsgcMapGeocoder: Nominatim, Google, HERE, Azure Maps, Mapbox, OpenRouteService i Geoapify
  • TsgcMapDirections: OSRM, OpenRouteService, Google Routes, HERE, Azure Maps, Mapbox i Geoapify
  • TsgcMapPlaces do autouzupełniania adresów, TsgcMapElevation i TsgcMapTimeZone
  • GeocodeAsync, GetRouteAsync i SuggestAsync utrzymują responsywność interfejsu; błędy docierają w OnError
Przeczytaj temat pomocy

Wyszukiwanie i wyznaczanie tras Tylko zarejestrowana

Trasy i wyszukiwanie adresów bez internetu i bez klucza

Routing online zawodzi dokładnie tam, gdzie używa się aplikacji terenowych, a każde żądanie może kosztować. Router offline wylicza trasy samochodowe, rowerowe i piesze na urządzeniu z grafu tras zbudowanego raz z wyciągu OpenStreetMap. Geokoder offline wyszukuje nazwy miejsc i odwrotnie geokoduje kliknięcie z indeksu GeoNames w SQLite. Oba działają bez sieci, bez konta i bez opłat za żądanie. Router i geokoder to komponenty niewizualne, więc usługa Windows lub narzędzie konsolowe może odpowiadać na żądania tras i adresów bez mapy na ekranie.

  • TsgcMapOfflineRouter odpowiada na GetRoute z grafu zbudowanego przez TsgcMapRouteGraphBuilder z .osm.pbf
  • sgcMapAddRouteToPolylines rysuje wynik na mapie
  • TsgcMapOfflineGeocoder z ReverseGeocode, na indeksie z TsgcMapGeoIndexBuilder
  • Konstruktory grafu i indeksu w wierszu poleceń są w folderze Tools

Community korzysta z usług online; router i geokoder offline należą do pakietu offline.

Przeczytaj temat pomocy

Pliki, renderowanie i urządzenia mobilne

Wymieniaj dane geograficzne z innymi narzędziami, renderuj mapy tam, gdzie nie ma ekranu, i zabierz mapę na telefon.

Pliki, renderowanie i urządzenia mobilne

Otwieraj pliki, które użytkownicy już mają

Klienci przysyłają ślady z zegarka GPS, strefy narysowane w narzędziu GIS lub KML z innego systemu. sgcMaps czyta i zapisuje GeoJSON, GPX i KML prosto do modelu mapy, więc import to jedno wywołanie, a eksport drugie. Ślady GPX przychodzą ze statystykami i można je kolorować według wysokości, a czytnik strumieniowy przechodzi przez duże wyciągi OpenStreetMap bez wczytywania ich do pamięci. Eksporty używają tych samych funkcji w odwrotnym kierunku, więc strefy narysowane przez użytkownika na mapie można zapisać jako GeoJSON lub KML i otworzyć w innych narzędziach GIS.

  • sgcMapLoadGeoJSONFile i sgcMapSaveGeoJSONFile, od Delphi XE6
  • TsgcMapGPX z TrackStats (TotalAscent, TotalDescent) i ColorByElevation
  • sgcMapLoadKMLFile i sgcMapSaveKMLFile
  • Czytnik OpenStreetMap przetwarza strumieniowo pliki .osm.pbf i XML przez zdarzenia
  • sgcMapGeoJSONAsText zwraca GeoJSON mapy jako ciąg znaków
Przeczytaj temat pomocy
Renderuj obrazy map na serwerze

Pliki, renderowanie i urządzenia mobilne

Renderuj obrazy map na serwerze

Dokumenty dostawy z trasą, dzienny raport z dzisiejszymi incydentami, miniatura dla strony internetowej: wiele map nigdy nie jest pokazywanych w oknie. Ta sama kontrolka renderuje do PNG lub bitmapy bez bycia widoczną, z aplikacji konsolowej lub usługi Windows. Możesz sprawdzić, czy dotarł każdy kafelek, zanim wyślesz obraz, więc wolny serwer kafelków nigdy nie skończy jako szary kwadrat w dokumencie klienta. Renderowanie po stronie serwera używa tych samych warstw, znaczników i kształtów co kontrolka interaktywna, więc mapa zaprojektowana na ekranie wygląda tak samo w PNG.

  • SaveToPNG i SaveToPNGFile, od Delphi 2009
  • RenderToBitmap i SaveToBMPFile dla twojego własnego potoku
  • LastRenderMissingTiles zgłasza kafelki, które nie były dostępne
  • W .NET MapView.RenderToPng działa też w systemie Linux
Przeczytaj temat pomocy

Pliki, renderowanie i urządzenia mobilne

Ta sama mapa na komputerze i urządzeniu mobilnym

Dyspozytor planuje na komputerze z Windows, a kierowca podąża za planem na telefonie. TsgcFMXMap przynosi ten sam model, warstwy, znaczniki, kształty i usługi do FireMonkey w systemach Windows, macOS, iOS i Android, więc kod napisany dla mapy VCL przenosi się dalej. TsgcMapLocation odczytuje pozycję urządzenia, więc mapa może się wyśrodkować na użytkowniku i za nim podążać. Bufor kafelków każdej warstwy działa też na urządzeniach mobilnych, więc telefon nadal pokazuje obszary, które już wczytał.

  • TsgcFMXMap od Delphi XE6, z tymi samymi kolekcjami co TsgcVCLMap
  • TsgcMapLocation w systemach Windows, Android, iOS i macOS
  • Demo FMX pokazuje kafelki, znaczniki i lokalizację w jednym formularzu
  • Minimalne wersje Delphi dla poszczególnych funkcji są wymienione w temacie o instalacji
Przeczytaj temat pomocy

Dostępność

UI Automation dla czytników ekranu i klawiatura, bez konfiguracji.

Dostępność

Mapa dostępna z klawiatury i udostępniana UI Automation

sgcMaps udostępnia mapę Microsoft UI Automation wraz z tekstem alternatywnym, znaczniki jako listę i warstwy jako listę, w której każda warstwa zgłasza, czy jest widoczna. Do znaczników można dotrzeć klawiaturą.

  • Strzałki przesuwają mapę, klawisze plus i minus przybliżają i oddalają, a Home wraca do widoku początkowego
  • Page Up i Page Down przechodzą do poprzedniego lub następnego znacznika, Enter aktywuje znacznik z fokusem, a Esc usuwa fokus ze znacznika
  • Mapa pokazuje widoczny wskaźnik fokusu, gdy ma fokus
  • W .NET sgcMaps jest kontrolką WinForms, więc mapa jest dostępna w WinForms

Dostępność jest domyślnie włączona w każdej edycji, łącznie z bezpłatną edycją Community, w VCL w każdej wersji Delphi i C++Builder od Delphi 7 do Delphi 13, w FireMonkey w systemie Windows oraz w WinForms. W Delphi i C++Builder właściwości AccessibleName i AccessibleDescription ustawiają nazwę i opis udostępniane UI Automation, a w .NET to samo robią standardowa nazwa dostępności i tekst pomocy każdego frameworka. Zobacz raporty zgodności dotyczące dostępności. Obraz mapy jest opisany wyłącznie przez swój środek i powiększenie, a renderer mapy nie stosuje wysokiego kontrastu systemu Windows, ponieważ obraz mapy to kafelki od dostawcy.

Przeczytaj temat pomocy

Zobacz sgcMaps w akcji

sgcMaps w demach pakietu sgcUI: kompletne aplikacje działające offline na wbudowanych danych symulowanych.

Kto buduje z sgcMaps

Serwis terenowy i logistyka

Technicy i kierowcy potrzebują mapy tam, gdzie zasięg jest słaby. Przygotuj kafelki regionu z wyprzedzeniem, wylicz trasy samochodowe na urządzeniu routerem offline i znajdź adresy geokoderem offline. Po powrocie do biura ten sam kod rysuje zaplanowane trasy i strefy dostaw oraz renderuje PNG każdej trasy do dokumentu dostawy.

  • Działa offline
  • Routing offline
  • Trasy i strefy
  • Obrazy map
Uruchom demo OfflineServices

Śledzenie zasobów i floty

Centrum kontroli obserwuje setki pojazdów, maszyn lub czujników naraz. Grupowanie utrzymuje czytelność mapy na poziomie kraju i rozdziela się na pojedyncze pinezki na poziomie ulicy. Mapa cieplna pokazuje, gdzie koncentrują się incydenty, kontrole geofence z punktem w wielokącie zgłaszają alerty, a zdarzenia kliknięcia znacznika otwierają rekord zasobu w twoich własnych formularzach.

  • Grupowanie
  • Mapy cieplne
  • Geometria
  • Zdarzenia
Uruchom demo MapFeatures

Lekki GIS i aplikacje outdoorowe

Narzędzia do planowania, aplikacje sportowe i oprogramowanie geodezyjne żyją na śladach GPX, warstwach KML i strefach GeoJSON. sgcMaps importuje i eksportuje wszystkie trzy, pokazuje statystyki śladów i kolory wysokości oraz umieszcza wynik na topograficznej mapie bazowej. Kontrolka FireMonkey zabiera te same funkcje na tablet lub telefon w terenie. Statystyki śladu podają łączne podejście i zejście trasy na pierwszy rzut oka.

  • GeoJSON, GPX i KML
  • Kafelki topograficzne
  • FireMonkey
Uruchom demo OfflineMap

Mapa w kilku linijkach

To samo API w Delphi, C++ Builder i C#: kafelki OpenStreetMap, trzy znaczniki, linia geodezyjna i promień, dopasowane do znaczników i zapisane jako PNG.

Mapa VCL zbudowana w kodzie: buforowana warstwa OpenStreetMap, znaczniki, linia geodezyjna i okrąg, a potem PNG z wynikiem.

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;

Przeczytaj temat pomocy →

Ta sama mapa w C++ Builder z wygenerowanymi nagłówkami sgcMaps.

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

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

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

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

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

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

Przeczytaj temat pomocy →

MapView bez interfejsu renderuje tę samą mapę do pliku PNG, w systemie Windows lub Linux.

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

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

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

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

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

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

Przeczytaj temat pomocy →

Uruchom dema sgcMaps

Z sgcMaps dostarczanych jest siedem dem Delphi i trzy dema .NET. Nie ma projektów demo C++ Builder.

Tylko zarejestrowana OfflineMap

Foldery, MBTiles i kafelki online, znaczniki i kształty oraz import GeoJSON, GPX i KML.

MapFeatures

Dostawcy i klucze API, grupowanie znaczników, edycja kształtów, mapy cieplne i eksport obrazów.

Services

Wyszukiwanie miejsc, geokodowanie, wskazówki dojazdu, wysokość, strefy czasowe i lokalizacja urządzenia z dostawcami online. Delphi XE8 i nowsze.

Tylko zarejestrowana OfflineServices

Zbuduj indeks GeoNames i graf tras OpenStreetMap, a potem wyszukuj miejsca i wyznaczaj trasy samochodem, rowerem lub pieszo bez sieci.

StaticRender

StaticRender

Program konsolowy, który renderuje mapę do pliku PNG lub BMP bez okna.

FMX

Mapa FireMonkey z kafelkami, znacznikami i lokalizacją urządzenia, dla Windows, macOS, iOS i Android. Delphi XE6 i nowsze.

VectorTiles

VectorTiles

Serwer kafelków wektorowych rysowany wbudowanym stylem lub własnym plikiem stylu, z ostrymi etykietami na każdym poziomie powiększenia.

WinFormsDemo

SgcMapControl .NET w oknie WinForms z dostawcami, znacznikami i kształtami.

Tylko zarejestrowana OfflineDemo

Pakiet offline .NET: kafelki, wyznaczanie tras i geokodowanie offline z lokalnych plików danych.

ConsoleRenderDemo

ConsoleRenderDemo

Konsola .NET, która renderuje mapę do PNG przez MapView bez interfejsu, w systemie Windows lub Linux.

Skompilowane dema

Gotowe do uruchomienia pliki wykonywalne każdego produktu sgcUI, nic nie trzeba instalować.

Pobierz sgcUI_bin.zip →

Gdzie jest sgcMaps

sgcMaps jest częścią sgcUI Enterprise i jest też sprzedawany osobno. sgcMaps jest też zawarty w pakiecie All-Access.

Pojedynczy pakiet sgcMaps

€149 / programista, pełny kod źródłowy, 1 rok aktualizacji.

Kup sgcMaps → Zobacz cennik →

sgcUI Enterprise

Wszystkie produkty sgcUI (14), od €699.

Zobacz Enterprise →

Bezpłatna edycja Community (instalator Delphi i NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community) ma każdą funkcję oprócz pakietu offline. Pakiet esegece.sgcMaps.Offline jest tylko w edycji Registered. Projekt odwołuje się albo do pakietów Community, albo Registered, nigdy do obu.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Kontrolki mapy VCL, FireMonkey i WinForms✓✓
Dostawcy kafelków, serwery kafelków HTTP i wektorowych✓✓
Foldery kafelków z/x/y i bufor kafelków każdej warstwy✓✓
Znaczniki, grupowanie, kształty, etykiety i mapy cieplne✓✓
Funkcje geometrii✓✓
Import i eksport GeoJSON, GPX i KML✓✓
Geokodowanie online, wskazówki dojazdu, miejsca, wysokość i strefy czasowe✓✓
Renderowanie statyczne do PNG✓✓
Pobieranie kafelków dla pakietów offline−✓
Pliki MBTiles (rastrowe i wektorowe)−✓
Router offline i geokoder offline−✓

Obsługiwane frameworki i platformy

Komponenty w sgcMaps

TsgcVCLMap i TsgcFMXMap

Kontrolki mapy dla VCL i FireMonkey oraz kontrolka Lazarus LCL czytająca kafelki z dysku.

Kolekcje modelu

Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels i Heatmaps, wspólne dla każdego frameworka.

Usługi online

TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation i TsgcMapTimeZone.

Narzędzia offline

TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder i TsgcMapTileDownloader.

TsgcMapLocation i funkcje geometrii

Lokalizacja urządzenia oraz sgcMapDistance, azymut, punkt docelowy, interpolacja geodezyjna, punkt w wielokącie i upraszczanie linii.

Mapy .NET

SgcMapControl dla WinForms oraz MapView, silnik bez interfejsu renderujący do PNG, także w systemie Linux.

CelKomponentPlatformy
Delphi 7 do 13, VCLTsgcVCLMap i modelWin32, a od XE2 także Win64
Delphi XE6 do 13, FireMonkeyTsgcFMXMapWindows, macOS, iOS i Android, lokalizacja urządzenia w systemach Windows, Android, iOS i macOS
C++ Builder 2007 do 13TsgcVCLMap i modelWygenerowane nagłówki .hpp i biblioteki statyczne
LazarusKontrolka mapy LCLTylko kafelki z dysku, nie pobiera kafelków
.NET 8, 9 i 10SgcMapControl, MapViewWinForms (net8.0-windows, net9.0-windows, net10.0-windows), PNG bez interfejsu w systemach Windows i Linux

Najczęściej zadawane pytania

Nie. Kafelki, znaczniki i kształty są rysowane natywnie przez kontrolkę, więc nie ma widoku webowego, biblioteki JavaScript ani środowiska przeglądarki do wdrożenia.

Nie dla OpenStreetMap, OpenTopoMap i kafelków Esri, ani dla routera i geokodera offline. Kafelki MapTiler, Thunderforest i Stadia oraz komercyjni dostawcy geokodowania i tras wymagają twojego własnego klucza. Każdy dostawca ma własne warunki użytkowania, które twoja aplikacja musi respektować.

Tak. Kafelki mogą pochodzić z folderów z/x/y, bufora każdej warstwy lub plików MBTiles, trasy z TsgcMapOfflineRouter, a wyszukiwanie adresów z TsgcMapOfflineGeocoder. MBTiles, pobieranie kafelków oraz router i geokoder offline są częścią pakietu offline edycji Registered.

GeoJSON, GPX i KML, do importu i eksportu, ze statystykami śladów GPX i kolorami wysokości. Czytnik strumieniowy przetwarza też pliki OpenStreetMap .osm.pbf i XML, w ten sposób budowany jest graf tras offline. Zobacz Formaty plików.

Model i kontrolka VCL działają od Delphi 7 i C++ Builder 2007. Niektóre funkcje mają wyższe minimum: wyjście PNG i serwery kafelków od Delphi 2009, kafelki wektorowe i router offline od XE2, FireMonkey i GeoJSON od XE6, MBTiles i geokoder offline od XE7, usługi online od XE8.

Projekty demo są tylko dla Delphi, ale komponenty instalują się w C++ Builder 2007 do 13 i działają tak samo. Zakładka C++ Builder w sekcji kodu powyżej pokazuje tę samą mapę zbudowaną z wygenerowanymi nagłówkami.

Tak. Edycja Community jest bezpłatna dla osób prywatnych i organizacji o rocznych przychodach brutto poniżej 1 mln EUR, zatrudniających nie więcej niż 5 programistów. Ma każdą funkcję oprócz pakietu offline. W .NET pakiety to esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community i esegece.sgcMaps.WinForms.Community. Większe organizacje potrzebują licencji Registered.

Pomoc sgcMaps

3,000+Programistów
20+Lat
761+Komponentów
30+Integracji API
5Platform
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Wypróbuj sgcMaps już dziś

Wersja próbna sgcUI zawiera sgcMaps z pakietem offline i każdy inny produkt sgcUI. Edycja .NET Community jest bezpłatna w NuGet.