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, dodaje warstwy z serwerów WMS i WMTS, 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, WinForms, WPF, AvaloniaBez kontrolki przeglądarki, bez JavaScriptuBezpłatna edycja .NET CommunityW sgcUI Enterprise
Natywnie wszędzieKontrolki VCL, FireMonkey, Lazarus, WinForms, WPF i Avalonia, które same rysują mapę.
Twoje dane na mapieZgrupowane znaczniki, trasy, strefy, okręgi, etykiety i mapy cieplne z kodu lub z plików.
Działa offlineKafelki z dysku, router offline i geokoder offline, bez klucza API.
Mapy jako obrazyRenderuj pliki PNG z konsoli, usługi lub procesu .NET w systemie Linux.
KLUCZOWE FUNKCJE
Wszystko, czego potrzebuje aplikacja z mapą
Osiemnaś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, usługi WMS lub WMTS, źródła wektorowego lub plików na dysku.
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 systemie Windows od Delphi XE6 oraz w systemach macOS, iOS i Android od Delphi 10.4
Kontrolka Lazarus LCL pokazuje kafelki z dysku
W .NET SgcMapControl dla WinForms, TsgcWpfMap dla WPF, TsgcAvaloniaMap dla Avalonia 12 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ą
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
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
Miasta, przedsiębiorstwa użyteczności publicznej i urzędy kartograficzne publikują użytkowanie terenu, kataster i ortofotomapy jako usługi internetowe OGC, a nie jako kafelki z/x/y. Ustaw TileSourceType na mtsWMS lub mtsWMTS, a warstwa pobiera swoje obrazy z usługi, jako przezroczysta nakładka na mapie bazowej albo jako sama mapa bazowa. Czytniki capabilities wyświetlają warstwy oferowane przez usługę i konfigurują warstwę za Ciebie, dzięki czemu użytkownicy wybierają warstwę po tytule, zamiast wpisywać parametry żądania.
mtsWMS wysyła żądania GetMap WMS 1.3.0 lub 1.1.1, z Layers, Styles, ImageFormat i Transparent w opcjach WMS warstwy
mtsWMTS czyta usługi KVP i REST przez opcje WMTS warstwy
TsgcMapWMSCapabilities i TsgcMapWMTSCapabilities wczytują dokument capabilities, a ApplyToLayer konfiguruje na jego podstawie warstwę
Dokument wyjątku z serwera trafia do OnTileError wraz z jego tekstem
W .NET TileSourceType.Wms i TileSourceType.Wmts, z WmsCapabilities i WmtsCapabilities
We wszystkich wydaniach, także w bezpłatnym wydaniu Community, od Delphi 2009. Mapa pozostaje w układzie Web Mercator: warstwy WMS są żądane w EPSG:3857, warstwy WMTS wymagają zestawu macierzy kafelków Web Mercator, takiego jak GoogleMapsCompatible, a GetFeatureInfo nie jest obsługiwane.
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 oraz pliki MBTiles i PMTiles należą do pakietu offline.
Archiwum PMTiles zawiera kompletną piramidę kafelków w jednym pliku, który kopiujesz na laptopa lub umieszczasz na dowolnym statycznym serwerze WWW, bez serwera kafelków do uruchamiania. sgcMaps czyta archiwum z pliku lokalnego lub bezpośrednio z serwera WWW za pomocą żądań HTTP range i trzyma przeczytane katalogi w pamięci podręcznej, dzięki czemu przez sieć przesyłane są tylko widoczne kafelki.
mtsPMTiles dla archiwów rastrowych PNG i JPEG, mtsVectorPMTiles dla archiwów Mapbox Vector Tile
TileSourcePath przyjmuje nazwę pliku lub adres URL http albo https
TsgcMapTileSource_PMTiles podaje zakres powiększenia, granice, środek i metadane archiwum
PMTiles w wersji 3; archiwa z kafelkami WebP są zgłaszane jako nieobsługiwane
Od Delphi XE2 oraz w zarejestrowanym pakiecie esegece.sgcMaps dla .NET
PMTiles należy do pakietu offline, tak jak MBTiles, więc jest w edycji Zarejestrowanej, a nie w bezpłatnej edycji Community.
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
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
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
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
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.
Wymieniaj dane geograficzne z innymi narzędziami, renderuj mapy tam, gdzie nie ma ekranu, i zabierz mapę na telefon, do okna WPF lub okna Avalonia.
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
Publiczne dane geograficzne wciąż są dostarczane jako shapefile Esri, a przestrzenne bazy danych wymieniają geometrię jako Well Known Text. TsgcMapShapefile importuje punkty, linie i wielokąty shapefile wraz z jego tabelą atrybutów, dzięki czemu każdy znacznik może pokazać rekord, z którego pochodzi. WKT oraz EWKT zapisywany przez PostGIS są odczytywane i zapisywane, co jest najprostszym sposobem przeniesienia strefy między mapą a kolumną geometrii w bazie danych.
LoadFromFile czyta plik .shp wraz z plikami .shx, .dbf, .prj i .cpg; OnItem otrzymuje każdy wiersz atrybutów, a LabelField ustawia tekst okienka punktów
Plik .prj w stopniach WGS84, ETRS89 lub NAD83 albo w Web Mercator jest wczytywany bezpośrednio, a plik bez .prj jest czytany jako WGS84
Każde inne odwzorowanie powoduje wyraźny błąd, chyba że Twoja procedura OnTransform przekształci współrzędne
sgcMapLoadWKT i TsgcMapWKT czytają POINT, LINESTRING, POLYGON, ich formy MULTI oraz GEOMETRYCOLLECTION, w stopniach lub metrach Web Mercator, a AsText zapisuje mapę z powrotem
We wszystkich wydaniach od Delphi 7; w .NET ShapefileFormat i WktFormat z wywołaniem zwrotnym Transform
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
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 w systemie Windows od Delphi XE6 oraz w systemach macOS, iOS i Android od Delphi 10.4 (macOS ARM od Delphi 11), z tymi samymi kolekcjami co TsgcVCLMap
TsgcMapLocation w systemach Windows, Android, iOS i macOS
Demo FMX pokazuje kafelki, znaczniki i lokalizację w jednym formularzu, a demo FMX Mobile jest przygotowane dla telefonów i tabletów
Niezależny od frameworka rdzeń kompiluje się także dla Linuksa 64 bit od Delphi 10.4, dla aplikacji konsolowych i serwerowych, które używają źródeł kafelków, formatów plików i danych offline
Trzy pakiety uruchomieniowe, sgcMaps (rdzeń), sgcMapsVCL i sgcMapsFMX, dzięki czemu aplikacja FireMonkey nie ładuje już pakietów VCL
Minimalne wersje Delphi dla poszczególnych funkcji są wymienione w temacie o instalacji
TsgcWpfMap i TsgcAvaloniaMap wnoszą silnik map .NET do WPF i Avalonia 12 wraz z funkcjami kontrolki WinForms: przesuwanie i powiększanie myszą, dotykiem i klawiaturą, warstwy, znaczniki, kształty, drukowanie, eksport do PDF i UI Automation. Warstwy i znaczniki deklaruje się w XAML z prefiksem sgc, a kolekcja Twojego modelu widoku staje się znacznikami przez ItemsSource, więc dodanie sklepu do kolekcji umieszcza go na mapie, a przeciągnięcie jego znacznika zapisuje nową pozycję z powrotem.
LatitudeMember, LongitudeMember, TooltipMember, PopupMember, ColorMember i DraggableMember odwzorowują Twoje właściwości na znaczniki
SelectedItem, Zoom, Bearing, CenterLatitude i CenterLongitude wiążą się dwukierunkowo
Kolory zapisuje się w XAML jako tekst #AARRGGBB lub #RRGGBB
NuGet esegece.sgcMaps.Wpf (net8.0-windows do net10.0-windows) i esegece.sgcMaps.Avalonia (net8.0 do net10.0), oba z bezpłatnym pakietem Community
Projekty WpfDemo i AvaloniaDemo pokazują to samo okno w obu frameworkach
Podgląd pokazuje dokładnie to, co dostaje drukarka i PDF.
Drukowanie, podgląd i PDF
Drukuj widok mapy lub wyeksportuj dostępny PDF
Mapa drukuje się na jednej stronie jako obraz bieżącego widoku: ten sam obszar co kontrolka, z jej środkiem, powiększeniem, kafelkami, warstwami, znacznikami i kształtami. Podziałka i informacja o źródle są drukowane, przyciski powiększenia, przełącznik warstw i kompas nie są, a drukowanie nigdy nie przesuwa widoku.
Print pokazuje okno dialogowe drukowania albo drukuje od razu na drukarce domyślnej, a ShowPrintPreview otwiera podgląd z nawigacją po stronach, powiększeniem, ustawieniami strony, drukowaniem i eksportem do PDF
PrintSettings przechowuje papier, orientację, marginesy, skalowanie oraz tekst nagłówka i stopki, a korzystają z nich drukarka, podgląd i PDF
ExportToPDF zapisuje stronę jako jeden oznakowany obraz, domyślnie 192 dpi, z tekstem alternatywnym, który podaje środek, powiększenie oraz liczbę warstw i znaczników
PDFALevel z TsgcUIPDFOptions dodaje PDF/A-2a lub PDF/A-3a do archiwizacji, osobno albo razem z PDF/UA
Drukowanie i podgląd są we wszystkich wydaniach, także w bezpłatnym wydaniu Community, w VCL, FireMonkey, WinForms, WPF i Avalonia. W FireMonkey drukowanie działa w systemach Windows i macOS, a podgląd i eksport do PDF na każdej platformie. Eksport do PDF wymaga mostka sgcUIPDF i licencjonowanego sgcPDF (pakiet NuGet esegece.sgcUICore.sgcPDF w .NET), więc nie ma go w wydaniu Community.
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 kontrolki mapy WinForms, WPF i Avalonia udostępniają tę samą strukturę UI Automation i tę samą obsługę klawiatury
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, WPF i Avalonia. W Delphi i C++Builder właściwości AccessibleName i AccessibleDescription ustawiają nazwę i opis udostępniane UI Automation, a w .NET robią to standardowa nazwa dostępności i tekst pomocy każdego frameworka. Zobacz raporty zgodności dotyczące dostępności, które nie obejmują jeszcze nowych kontrolek mapy WPF i Avalonia. 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.
Linie łamane, wielokąty i mapy cieplne narysowane na tej samej mapie.
Jeden obszar, czterech dostawców bez klucza, każdy z własną atrybucją.
ZASTOSOWANIA
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.
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.
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.
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;
Nakładka WMS i import shapefile wraz z atrybutami w Delphi oraz okno WPF z mapą, warstwą i znacznikiem zadeklarowanymi w XAML.
Przezroczysta nakładka WMS z własną pamięcią podręczną kafelków oraz shapefile, w którym parki są wypełniane na zielono na podstawie tabeli atrybutów. Oba działają we wszystkich wydaniach.
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;
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}";
}
}
}
Z sgcMaps dostarczanych jest jedenaście dem Delphi i osiem dem .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
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
Serwer kafelków wektorowych rysowany wbudowanym stylem lub własnym plikiem stylu, z ostrymi etykietami na każdym poziomie powiększenia.
FMXMobile
Mapa FireMonkey stworzona dla telefonów i tabletów: przesuwanie jednym palcem, powiększanie gestem szczypania, duże przyciski powiększenia, Twoja pozycja z okręgiem dokładności i lista miejsc. Delphi 10.4 i nowsze.
OGCServices
Wczytuje dokument capabilities WMS lub WMTS z adresu URL lub pliku, wyświetla listę warstw i dodaje wybraną jako nakładkę na OpenStreetMap, z suwakiem przezroczystości. Delphi 2009 i nowsze.
Tylko zarejestrowana PMTiles
Otwiera rastrowe lub wektorowe archiwum PMTiles z pliku lub adresu URL, pokazuje jego nagłówek i metadane oraz dodaje je jako warstwę wyśrodkowaną na archiwum. Delphi XE2 i nowsze.
ShapefileWKT
Importuje shapefile wraz z tabelą atrybutów, pokazuje rekord klikniętego znacznika oraz importuje i eksportuje WKT.
WinFormsDemo
SgcMapControl .NET w oknie WinForms z dostawcami, znacznikami i kształtami.
WpfDemo
Mapa WPF zadeklarowana w XAML: warstwy bazowe i znaczniki w znaczniku, sklepy powiązane jako znaczniki przez ItemsSource, suwaki powiększenia i obrotu, drukowanie i eksport do PDF.
AvaloniaDemo
To samo okno z kontrolką mapy Avalonia 12 i skompilowanymi powiązaniami.
OgcServicesDemo
Kontrolka mapy WinForms z warstwą bazową OpenStreetMap i jedną nakładką z usługi WMS lub WMTS: wczytuje dokument capabilities z adresu URL lub pliku, wyświetla listę warstw, dodaje wybraną z suwakiem przezroczystości i pokazuje błędy kafelków.
Tylko zarejestrowana PMTilesDemo
Kontrolka mapy WinForms z warstwą z rastrowego lub wektorowego archiwum PMTiles, otwartego z pliku lub adresu URL, z nagłówkiem i metadanymi oraz mapą wyśrodkowaną na archiwum.
ShapefileWktDemo
Kontrolka mapy WinForms importująca shapefile wraz z tabelą atrybutów i rekordem klikniętego znacznika oraz import i eksport WKT nakładek.
Tylko zarejestrowana OfflineDemo
Pakiet offline .NET: kafelki, wyznaczanie tras i geokodowanie offline z lokalnych plików danych.
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ć.
Pięć dem QuickStart dla Delphi (VCL) znajduje się w Demos\Maps\00.QuickStart. Przewodnik PDF omawia je krok po kroku: pierwsza mapa ze znacznikami, znaczniki i etykiety dodawane w kodzie, kształty, zdarzenia mapy oraz wyszukiwarka sklepów.
Bezpłatna edycja .NET Community (NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community, esegece.sgcMaps.Avalonia.Community) ma każdą funkcję oprócz pakietu offline. Pakiet esegece.sgcMaps.Offline jest tylko w edycji Zarejestrowanej. Projekt odwołuje się do pakietów Community albo Zarejestrowanych, nigdy do obu.
Funkcja
Community (bezpłatna)
Zarejestrowana
Kontrolki mapy VCL, FireMonkey, WinForms, WPF i Avalonia
✓
✓
Dostawcy kafelków, serwery kafelków HTTP i wektorowych
✓
✓
Warstwy WMS i WMTS
✓
✓
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
✓
✓
Import shapefile, import i eksport WKT
✓
✓
Geokodowanie online, wskazówki dojazdu, miejsca, wysokość i strefy czasowe
✓
✓
Renderowanie statyczne do PNG
✓
✓
Pobieranie kafelków dla pakietów offline
−
✓
Pliki MBTiles i PMTiles (rastrowe i wektorowe)
−
✓
Router offline i geokoder offline
−
✓
PLATFORMY
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.
Formaty GIS i usługi OGC
TsgcMapShapefile, TsgcMapWKT, TsgcMapWMSCapabilities, TsgcMapWMTSCapabilities i TsgcMapTileSource_PMTiles.
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, TsgcWpfMap dla WPF, TsgcAvaloniaMap dla Avalonia 12 oraz MapView, silnik bez interfejsu renderujący do PNG, także w systemie Linux.
Cel
Komponent
Platformy
Delphi 7 do 13, VCL
TsgcVCLMap i model
Win32, Win64 od XE2 oraz ARM64EC w Delphi 13
Delphi XE6 do 13, FireMonkey
TsgcFMXMap
Windows od XE6; macOS, iOS i Android od Delphi 10.4 (macOS ARM od Delphi 11); lokalizacja urządzenia w systemach Windows, Android, iOS i macOS
Delphi 10.4 do 13, Linux 64 bit
Niezależny od frameworka rdzeń, bez kontrolki mapy
Źródła kafelków, usługi, formaty plików i dane offline w aplikacjach konsolowych i serwerowych
C++ Builder 2007 do 13
TsgcVCLMap, TsgcFMXMap od XE6 i model
Tylko Windows: Win32, Win64 od XE3 i Win64x w C++ Builder 13, z wygenerowanymi nagłówkami .hpp i bibliotekami statycznymi
WinForms i WPF (net8.0-windows, net9.0-windows, net10.0-windows), Avalonia 12 (net8.0, net9.0, net10.0), PNG bez interfejsu w systemach Windows i Linux
Pakiety Delphi: sgcMaps zawiera niezależny od frameworka rdzeń, sgcMapsVCL mapę VCL, a sgcMapsFMX mapę FireMonkey, wraz z pakietami czasu projektowania dclsgcMaps i dclsgcMapsFMX. Projekt budowany z pakietami uruchomieniowymi, który wymienia sgcMaps, dodaje sgcMapsVCL lub sgcMapsFMX. Zobacz Pakiety i Platformy.
FAQ
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, plików MBTiles lub archiwów PMTiles, trasy z TsgcMapOfflineRouter, a wyszukiwanie adresów z TsgcMapOfflineGeocoder. MBTiles, PMTiles, pobieranie kafelków oraz router i geokoder offline są częścią pakietu offline edycji Registered.
GeoJSON, GPX, KML i WKT z EWKT, do importu i eksportu, oraz shapefile Esri wraz z atrybutami do importu, 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, Shapefile i WKT.
Model, kontrolka VCL, shapefile i WKT działają od Delphi 7 i C++ Builder 2007. Niektóre funkcje mają wyższe minimum: wyjście PNG, serwery kafelków, WMS i WMTS od Delphi 2009, kafelki wektorowe, PMTiles i router offline od XE2, FireMonkey w systemie Windows i GeoJSON od XE6, MBTiles i geokoder offline od XE7, usługi online od XE8. FireMonkey w systemach macOS, iOS i Android oraz jednostki rdzenia w systemie Linux 64 bit wymagają Delphi 10.4 lub nowszego.
Tak. Warstwa z TileSourceTypemtsWMS lub mtsWMTS pobiera swoje obrazy z usługi WMS 1.1.1 lub 1.3.0 albo z usługi WMTS w kodowaniu KVP lub REST, a czytniki capabilities konfigurują warstwę na podstawie opisu usługi. Mapa jest w układzie Web Mercator, więc warstwy WMS są żądane w EPSG:3857, a usługi WMTS wymagają zestawu macierzy kafelków Web Mercator. WMS i WMTS są we wszystkich wydaniach, także w Community. Zobacz WMS i WMTS.
Tak. TsgcWpfMap (NuGet esegece.sgcMaps.Wpf) i TsgcAvaloniaMap (esegece.sgcMaps.Avalonia, Avalonia 12) hostują ten sam silnik co SgcMapControl z WinForms. Warstwy i znaczniki można deklarować w XAML, znaczniki wiązać z kolekcją przez ItemsSource, a widok wiązać dwukierunkowo. Oba są także w bezpłatnej edycji Community. Zobacz Szybki start WPF i Szybki start Avalonia.
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, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community i esegece.sgcMaps.Avalonia.Community. WMS, WMTS, shapefile, WKT oraz kontrolki WPF i Avalonia są także w Community. Większe organizacje potrzebują licencji Zarejestrowanej.