현장 서비스와 물류
기술자와 운전자는 통신이 불안한 곳에서 지도가 필요합니다. 한 지역의 타일을 미리 준비하고, 오프라인 라우터로 자동차 경로를 장치에서 계산하고, 오프라인 지오코더로 주소를 찾으세요. 사무실로 돌아오면 같은 코드로 계획된 경로와 배송 구역을 그리고, 각 경로의 PNG를 배송 명세서용으로 렌더링합니다.
- 오프라인에서도 동작
- 오프라인 경로 탐색
- 경로와 구역
- 지도 이미지
브라우저 컨트롤이나 JavaScript 한 줄 없이 애플리케이션에 제대로 된 지도를 넣으세요. sgcMaps는 래스터 및 벡터 타일을 직접 그리고, 수천 개의 클러스터링 마커, 경로, 영역을 표시하고, 주소를 지오코딩하며, 로컬 타일과 오프라인 라우터로 오프라인에서도 계속 동작합니다.
실제 API와 그 뒤의 도움말 항목을 갖춘 13가지 기능입니다.
지도 컨트롤은 타일 서버, 벡터 소스, 디스크의 파일에서 모든 타일을 직접 그립니다.
타일과 지도 데이터
대부분의 지도 컴포넌트는 웹 뷰와 JavaScript 라이브러리를 감싸고 있어서 데스크톱 애플리케이션이 결국 브라우저를 함께 배포하게 됩니다. sgcMaps는 그렇지 않습니다. TsgcVCLMap과 TsgcFMXMap은 자체 캔버스에서 타일을 다운로드하고, 캐시하고, 그리며, 마우스 휠 확대/축소와 끌어서 이동을 처리하고, 일반적인 Delphi 이벤트를 발생시킵니다. 지도는 다른 컨트롤과 같은 네이티브 컨트롤입니다. 도킹되고, 폼과 함께 테마가 적용되며, 나머지 코드처럼 디버깅할 수 있습니다. 배포하거나 보안을 챙길 추가 프로세스가 없으며, 애플리케이션이 실행되는 모든 컴퓨터에서 지도가 똑같이 동작합니다.
Layers 컬렉션은 각자 TileSourceType을 가진 TsgcMapLayer 항목을 하나 이상 담습니다TsgcFMXMap은 Delphi XE6부터 Windows, macOS, iOS, Android에서 실행됩니다SgcMapControl과 헤드리스 MapView가 하나의 엔진을 공유합니다
타일과 지도 데이터
기본 지도를 고르는 데 타일 서버 문서를 읽어야 해서는 안 됩니다. 레이어의 Provider를 설정하고 sgcMapApplyProvider를 호출하면 레이어가 해당 제공자의 URL 템플릿, 최대 확대/축소 수준, 저작권 표시 텍스트를 받습니다. OpenStreetMap, OpenTopoMap, Esri World Imagery, Esri World Street는 키 없이 동작합니다. MapTiler, Thunderforest, Stadia는 직접 발급한 API 키를 사용합니다. 자체 타일 서버는 URL 템플릿 하나면 됩니다. 각 레이어가 자신의 제공자를 가지므로 위성 레이어와 거리 레이어를 한 지도에 두고 사용자가 지도에서 직접 전환하게 할 수 있습니다.
mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreetmtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmoothmtpCustom과 URLTemplate으로 모든 {z}/{x}/{y} 서버를 읽습니다ShowLayerSwitcher는 지도에 레이어 버튼을 표시합니다
타일과 지도 데이터
래스터 타일은 확대하면 흐려지고, 스타일을 바꿀 때마다 서버에서 새 이미지를 받아야 합니다. 벡터 타일을 사용하면 컨트롤이 지오메트리를 받아 도로, 물, 건물, 레이블을 직접 그리므로 고해상도 화면과 내보낸 이미지에서도 텍스트가 선명합니다. 레이어가 Mapbox Vector Tile 서버를 가리키게 하고 VectorStyleFile을 비워 두면 내장 스타일을 사용하며, MapLibre 또는 Mapbox GL 스타일 파일을 불러와 브랜드에 맞출 수도 있습니다. 벡터 레이어는 VCL과 FireMonkey 컨트롤 모두에서 동작합니다.
mtsVectorHTTP는 Delphi XE2부터 벡터 타일 서버를 읽습니다mtsVectorMBTiles는 로컬 벡터 MBTiles 파일(오프라인 팩)을 읽습니다TsgcMapVectorStyle은 LoadFromFile 또는 LoadFromJSON으로 스타일을 불러옵니다TsgcMapTileSource_MVT에 있습니다타일과 지도 데이터 Registered 에디션 전용
지하실의 현장 기술자, 바다 위의 선박, 공장 현장 네트워크는 타일 서버에 의존할 수 없습니다. sgcMaps는 웹에서 읽을 때와 똑같이 디스크에서 타일을 읽습니다. 레이어에 CacheFolder를 지정하면 가져온 모든 타일이 다음 실행을 위해 보관됩니다. 완전한 오프라인 팩은 TsgcMapTileDownloader가 한 영역과 확대/축소 범위를 미리 폴더나 MBTiles 파일로 가져옵니다.
mtsFolder는 PNG 또는 JPEG 타일의 z/x/y 폴더를 읽습니다mtsMBTiles는 Delphi XE7부터(FireDAC SQLite) 래스터 MBTiles 파일을 읽습니다CountTiles는 다운로드를 시작하기 전에 크기를 알려 주며, DelayMS와 OnProgress로 서버에 부담을 주지 않고 진행 상황을 볼 수 있습니다Community 에디션은 z/x/y 타일 폴더를 읽고 레이어별 CacheFolder를 유지합니다. 타일 다운로더와 MBTiles 파일은 오프라인 팩에 속합니다.
도움말 항목 읽기내 데이터를 지도에 올리고, 모든 확대/축소 수준에서 읽기 쉽게 유지하며, 그 뒤의 계산을 처리합니다.
마커, 도형, 지오메트리
차량 대수, 매장 네트워크, 센서 그리드는 금세 겹친 핀 덩어리가 됩니다. 클러스터링을 켜면 가까운 마커가 번호가 붙은 하나의 말풍선으로 합쳐지고, 사용자가 확대하면 다시 나뉘며, 모든 확대/축소 수준에서 다시 계산됩니다. 각 마커는 고유한 팝업, 툴팁, 아이콘을 가지며, 클릭, 드래그, 클러스터 클릭이 이벤트로 전달되므로 지도가 그림이 아니라 워크플로의 일부가 됩니다. 마커는 데이터에서 반복문으로 추가하거나 GeoJSON, GPX, KML 파일에서 가져올 수 있고, ClearMarkers는 한 번의 호출로 초기화합니다.
GridSize, MinClusterSize, ZoomOnClick을 갖춘 MarkerOptions.ClusteringPopupText, TooltipText, IconBitmapOnMarkerClick, OnClusterClick, OnMarkerDragEnd 이벤트BeginUpdate와 EndUpdate로 감싸고, FitToMarkers가 모든 마커가 보이도록 맞춥니다MarkerAtScreen과 ClusterAtScreen이 모든 픽셀을 히트 테스트합니다
마커, 도형, 지오메트리
대부분의 지도 화면에는 핀 이상이 필요합니다. 계획된 배송 경로, 물류 창고가 담당하는 영역, 고객 주변 반경, 주문이 들어오는 지점 같은 것입니다. sgcMaps는 이 모두를 마커와 같은 좌표로 지도 모델의 항목으로 그립니다. 도형을 편집 가능하게 만들면 사용자가 마우스로 영역의 꼭짓점을 끌 수 있고 편집이 끝나면 코드에 알려 줍니다. 레이블은 고유한 글꼴, 색상, 배경으로 좌표에 텍스트를 놓아 영역 이름과 경로 번호가 지도에 붙어 있게 합니다.
Dashed 및 Geodesic 선을 갖춘 AddPolylineAddHole을 갖춘 AddPolygon, 그리고 AddRectangle, AddCircle(RadiusMeters), AddLabelEditable 도형은 OnShapeEdited로 변경을 알립니다TsgcMapHeatmap은 AddPoint로 가중치가 있는 점과 MaxIntensity를 받습니다마커, 도형, 지오메트리
이 차량이 영역 안에 있는가? 가장 가까운 물류 창고는 얼마나 먼가? 경로의 어느 지점이 고객과 가장 가까운가? 이런 질문은 모든 지도 애플리케이션에서 나오며 극지방 근처나 먼 거리에서는 틀리기 쉽습니다. 지오메트리 유닛은 WGS84 구면에서 이를 일반 함수로 해결하며, 지도가 전혀 없는 서비스에서도 호출할 수 있습니다. 함수는 일반 TsgcMapCoord 레코드를 받고, 직접 오버레이를 그릴 때는 sgcMapLatLonToPixel과 sgcMapPixelToLatLon이 화면 좌표와 월드 좌표를 변환합니다.
sgcMapDistance, sgcMapInitialBearing, sgcMapDestinationPointsgcMapPointInPolygon과 sgcMapPointInPolygonWithHolessgcMapNearestPointOnPolyline은 위치를 경로에 맞춥니다sgcMapGeodesicInterpolate와 sgcMapSimplify온라인 제공자로 주소를 찾고 경로를 계획하거나, API 키 없이 완전히 오프라인으로 처리합니다.
검색과 경로 탐색
지오코딩 및 경로 탐색 제공자마다 고유한 REST 형식, 키, 특이점이 있습니다. 서비스 컴포넌트가 이를 감춰 줍니다. 제공자를 고르고, 필요하면 키를 설정하고, 동기 또는 비동기로 같은 메서드를 호출하면 됩니다. 제공자를 바꾸는 것은 속성 변경이지 다시 작성하는 일이 아니며, 결과는 지도에 바로 올릴 수 있는 Delphi 객체로 돌아옵니다. 모든 컴포넌트가 TsgcMapService 기본 클래스를 공유하므로 ApiKey, UserAgent, LastError는 모든 제공자에서 똑같이 동작합니다.
TsgcMapGeocoder: Nominatim, Google, HERE, Azure Maps, Mapbox, OpenRouteService, GeoapifyTsgcMapDirections: OSRM, OpenRouteService, Google Routes, HERE, Azure Maps, Mapbox, GeoapifyTsgcMapPlaces, 그리고 TsgcMapElevation과 TsgcMapTimeZoneGeocodeAsync, GetRouteAsync, SuggestAsync가 UI 응답성을 유지하며, 오류는 OnError로 전달됩니다검색과 경로 탐색 Registered 에디션 전용
온라인 경로 탐색은 현장 앱을 쓰는 바로 그 장소에서 실패하며, 요청마다 비용이 들 수 있습니다. 오프라인 라우터는 OpenStreetMap 추출본에서 한 번 만든 경로 그래프로 자동차, 자전거, 도보 경로를 장치에서 계산합니다. 오프라인 지오코더는 SQLite의 GeoNames 인덱스에서 지명을 검색하고 클릭 지점을 역지오코딩합니다. 둘 다 네트워크, 계정, 요청당 요금 없이 동작합니다. 라우터와 지오코더는 비시각 컴포넌트이므로 Windows 서비스나 콘솔 도구가 화면에 지도 없이 경로와 주소 요청에 응답할 수 있습니다.
TsgcMapOfflineRouter는 .osm.pbf에서 TsgcMapRouteGraphBuilder가 만든 그래프로 GetRoute에 응답합니다sgcMapAddRouteToPolylines는 결과를 지도에 그립니다TsgcMapGeoIndexBuilder가 만든 인덱스 위에서 ReverseGeocode를 지원하는 TsgcMapOfflineGeocoderCommunity 에디션은 온라인 서비스를 사용하며, 오프라인 라우터와 지오코더는 오프라인 팩에 속합니다.
도움말 항목 읽기다른 도구와 지리 데이터를 교환하고, 화면이 없는 곳에서 지도를 렌더링하며, 지도를 휴대폰으로 가져갑니다.
파일, 렌더링, 모바일
고객은 GPS 시계의 트랙, GIS 도구로 그린 영역, 다른 시스템의 KML을 보내 옵니다. sgcMaps는 GeoJSON, GPX, KML을 지도 모델로 바로 읽고 쓰므로 가져오기도 호출 한 번, 내보내기도 호출 한 번입니다. GPX 트랙은 통계와 함께 제공되며 고도에 따라 색을 입힐 수 있고, 스트리밍 리더가 대용량 OpenStreetMap 추출본을 메모리에 올리지 않고 처리합니다. 내보내기는 같은 함수를 반대로 사용하므로 사용자가 지도에 그린 영역을 GeoJSON이나 KML로 저장해 다른 GIS 도구에서 열 수 있습니다.
sgcMapLoadGeoJSONFile과 sgcMapSaveGeoJSONFileTrackStats(TotalAscent, TotalDescent)와 ColorByElevation을 갖춘 TsgcMapGPXsgcMapLoadKMLFile과 sgcMapSaveKMLFilesgcMapGeoJSONAsText는 지도의 GeoJSON을 문자열로 반환합니다
파일, 렌더링, 모바일
경로가 있는 배송 명세서, 오늘의 사고가 담긴 일일 보고서, 웹 페이지 썸네일처럼 창에 표시되지 않는 지도도 많습니다. 같은 컨트롤이 화면에 보이지 않은 채로 콘솔 애플리케이션이나 Windows 서비스에서 PNG나 비트맵으로 렌더링합니다. 이미지를 보내기 전에 모든 타일이 도착했는지 확인할 수 있어서, 느린 타일 서버 때문에 고객 문서에 회색 사각형이 들어가는 일이 없습니다. 서버 측 렌더링은 대화형 컨트롤과 같은 레이어, 마커, 도형을 사용하므로 화면에서 디자인한 지도가 PNG에서도 똑같이 보입니다.
SaveToPNG와 SaveToPNGFileRenderToBitmap과 SaveToBMPFileLastRenderMissingTiles는 사용할 수 없었던 타일을 알려 줍니다MapView.RenderToPng도 Linux에서 실행됩니다파일, 렌더링, 모바일
배차 담당자는 Windows 데스크톱에서 계획하고 운전자는 휴대폰에서 그 계획을 따릅니다. TsgcFMXMap은 같은 모델, 레이어, 마커, 도형, 서비스를 Windows, macOS, iOS, Android의 FireMonkey로 가져오므로 VCL 지도용으로 작성한 코드를 그대로 사용할 수 있습니다. TsgcMapLocation은 장치의 위치를 읽어 지도가 사용자를 중심으로 따라가게 합니다. 레이어별 타일 캐시는 모바일에서도 동작하므로 휴대폰은 이미 불러온 지역을 계속 표시합니다.
TsgcVCLMap과 같은 컬렉션을 가진 Delphi XE6부터의 TsgcFMXMapTsgcMapLocation미리 보기에는 프린터와 PDF가 받는 내용이 그대로 표시됩니다.
인쇄, 미리 보기, PDF
지도는 현재 보기의 그림으로 한 페이지에 인쇄됩니다. 영역은 컨트롤과 같으며 중심, 확대/축소 수준, 타일, 레이어, 마커, 도형이 포함됩니다. 축척 막대와 출처 표시는 인쇄되고, 확대/축소 버튼, 레이어 전환기, 나침반은 인쇄되지 않으며, 인쇄가 보기를 움직이는 일은 없습니다.
Print는 인쇄 대화 상자를 표시하거나 기본 프린터로 바로 인쇄하고, ShowPrintPreview는 페이지 이동, 확대/축소, 페이지 설정, 인쇄, PDF 내보내기를 갖춘 미리 보기를 엽니다PrintSettings는 용지, 방향, 여백, 배율, 머리글과 바닥글 텍스트를 담고 있으며, 프린터, 미리 보기, PDF가 모두 이를 사용합니다ExportToPDF는 페이지를 태그가 지정된 그림 하나(기본 192 dpi)로 기록하며, 중심, 확대/축소 수준, 레이어와 마커 수를 알려 주는 대체 텍스트를 붙입니다TsgcUIPDFOptions의 PDFALevel은 보관용으로 PDF/A-2a 또는 PDF/A-3a를 추가하며, 단독으로도 PDF/UA와 함께도 사용할 수 있습니다인쇄와 미리 보기는 무료 Community 에디션을 포함한 모든 에디션에서 VCL, FireMonkey, WinForms에서 사용할 수 있습니다. FireMonkey에서는 인쇄가 Windows와 macOS에서, 미리 보기와 PDF 내보내기는 모든 플랫폼에서 동작합니다. PDF 내보내기에는 sgcUIPDF 브리지와 라이선스가 있는 sgcPDF(.NET에서는 NuGet 패키지 esegece.sgcUICore.sgcPDF)가 필요하므로 Community 에디션에는 포함되지 않습니다.
UI Automation을 통한 화면 읽기 프로그램과 키보드 지원, 별도 설정이 필요 없습니다.
접근성
sgcMaps는 지도를 대체 텍스트와 함께, 마커를 목록으로, 레이어를 목록으로 Microsoft UI Automation에 노출하며, 각 레이어는 표시 여부를 보고합니다. 마커에는 키보드로 도달할 수 있습니다.
접근성은 무료 Community 에디션을 포함한 모든 에디션에서 기본으로 켜져 있으며, Delphi 7부터 Delphi 13까지 모든 Delphi 및 C++Builder 버전의 VCL, Windows의 FireMonkey, 그리고 WinForms에서 지원됩니다. Delphi와 C++Builder에서는 AccessibleName과 AccessibleDescription이 UI Automation에 노출되는 이름과 설명을 설정하고, .NET에서는 각 프레임워크의 표준 접근성 이름과 도움말 텍스트가 같은 역할을 합니다. 접근성 적합성 보고서를 참조하세요. 지도 이미지는 중심과 확대/축소 수준으로만 설명되며, 지도 이미지가 제공자의 타일 이미지이기 때문에 지도 렌더러는 Windows 고대비를 따르지 않습니다.
sgcUI 제품군 데모 속의 sgcMaps: 내장 시뮬레이션 데이터로 오프라인에서 실행되는 완전한 애플리케이션입니다.
차량 48대, 그 경로, 폐쇄 구역 다각형을 한 지도에.
Altamira Fleet →
거리 수준으로 보는 도시 배송 라운드와 배송지.
Altamira Fleet →
상태 마커로 표시한 공장 네 곳과 사이트별 생산량.
Altamira Plant →
RAG 상태별 색상의 마커로 표시한 프로젝트 사이트.
Altamira PMO →
기술자와 운전자는 통신이 불안한 곳에서 지도가 필요합니다. 한 지역의 타일을 미리 준비하고, 오프라인 라우터로 자동차 경로를 장치에서 계산하고, 오프라인 지오코더로 주소를 찾으세요. 사무실로 돌아오면 같은 코드로 계획된 경로와 배송 구역을 그리고, 각 경로의 PNG를 배송 명세서용으로 렌더링합니다.
관제실은 수백 대의 차량, 기계, 센서를 한꺼번에 지켜봅니다. 클러스터링은 국가 수준에서 지도를 읽기 쉽게 유지하고 거리 수준에서는 개별 핀으로 나뉩니다. 히트맵은 사고가 집중되는 곳을 보여 주고, 다각형 내 점 판정을 이용한 지오펜스 검사는 경보를 발생시키며, 마커 클릭 이벤트는 내 폼에서 자산의 레코드를 엽니다.
계획 도구, 스포츠 앱, 측량 소프트웨어는 GPX 트랙, KML 레이어, GeoJSON 영역을 기반으로 합니다. sgcMaps는 세 형식을 모두 가져오고 내보내며, 트랙 통계와 고도 색상을 표시하고, 결과를 지형도 기본 지도 위에 올립니다. FireMonkey 컨트롤은 같은 기능을 현장의 태블릿이나 휴대폰으로 가져갑니다. 트랙 통계는 경로의 총 상승과 하강을 한눈에 보여 줍니다.
Delphi, C++ Builder, C#에서 같은 API를 사용합니다. OpenStreetMap 타일, 마커 세 개, 측지선, 반경을 마커에 맞춰 표시하고 PNG로 저장합니다.
코드로 만든 VCL 지도: 캐시되는 OpenStreetMap 레이어, 마커, 측지선, 원을 만든 다음 결과를 PNG로 저장합니다.
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;생성된 sgcMaps 헤더를 사용하는 C++ Builder의 같은 지도.
#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);
}헤드리스 MapView는 Windows나 Linux에서 같은 지도를 PNG 파일로 렌더링합니다.
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.RenderingsgcMaps에는 Delphi 데모 7개와 .NET 데모 3개가 포함되어 있습니다. C++ Builder 데모 프로젝트는 없습니다.
폴더, MBTiles, 온라인 타일, 마커와 도형, GeoJSON, GPX, KML 가져오기.
제공자와 API 키, 마커 클러스터링, 도형 편집, 히트맵, 이미지 내보내기.
온라인 제공자를 사용한 장소 검색, 지오코딩, 길 안내, 고도, 시간대, 장치 위치. Delphi XE8 이상.
GeoNames 인덱스와 OpenStreetMap 경로 그래프를 만든 다음, 네트워크 없이 장소를 검색하고 자동차, 자전거, 도보 경로를 탐색합니다.
창 없이 지도를 PNG 또는 BMP 파일로 렌더링하는 콘솔 프로그램.
Windows, macOS, iOS, Android용 타일, 마커, 장치 위치를 갖춘 FireMonkey 지도. Delphi XE6 이상.
내장 스타일 또는 직접 만든 스타일 파일로 그린 벡터 타일 서버이며, 모든 확대/축소 수준에서 레이블이 선명합니다.
WinForms 창의 .NET SgcMapControl이며 제공자, 마커, 도형을 보여 줍니다.
.NET 오프라인 패키지: 로컬 데이터 파일을 사용하는 오프라인 타일, 경로 탐색, 지오코딩.
헤드리스 MapView로 지도를 PNG로 렌더링하는 .NET 콘솔이며, Windows나 Linux에서 실행됩니다.
무료 Community 에디션(Delphi 설치 프로그램과 NuGet의 esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community)에는 오프라인 팩을 제외한 모든 기능이 있습니다. esegece.sgcMaps.Offline 패키지는 Registered 전용입니다. 프로젝트는 Community 패키지 또는 Registered 패키지 중 하나만 참조해야 하며 둘을 함께 참조해서는 안 됩니다.
| 기능 | Community (무료) | Registered 에디션 |
|---|---|---|
| VCL, FireMonkey, WinForms 지도 컨트롤 | ✓ | ✓ |
| 타일 제공자, HTTP 및 벡터 타일 서버 | ✓ | ✓ |
| z/x/y 타일 폴더와 레이어별 타일 캐시 | ✓ | ✓ |
| 마커, 클러스터링, 도형, 레이블, 히트맵 | ✓ | ✓ |
| 지오메트리 함수 | ✓ | ✓ |
| GeoJSON, GPX, KML 가져오기와 내보내기 | ✓ | ✓ |
| 온라인 지오코딩, 길 안내, 장소, 고도, 시간대 | ✓ | ✓ |
| PNG로 정적 렌더링 | ✓ | ✓ |
| 오프라인 팩용 타일 다운로더 | − | ✓ |
| MBTiles 파일(래스터 및 벡터) | − | ✓ |
| 오프라인 라우터와 오프라인 지오코더 | − | ✓ |
VCL과 FireMonkey용 지도 컨트롤, 그리고 디스크의 타일을 읽는 Lazarus LCL 컨트롤.
모든 프레임워크가 공유하는 Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels, Heatmaps.
TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation and TsgcMapTimeZone.
TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder and TsgcMapTileDownloader.
장치 위치, 그리고 sgcMapDistance, 방위각, 목적지 지점, 측지 보간, 다각형 내 점 판정, 선 단순화.
WinForms용 SgcMapControl, 그리고 PNG로 렌더링하는 헤드리스 엔진 MapView이며 Linux에서도 동작합니다.
| 대상 | 컴포넌트 | 플랫폼 |
|---|---|---|
| Delphi 7부터 13, VCL | TsgcVCLMap과 모델 | Win32, XE2부터 Win64 |
| Delphi XE6부터 13, FireMonkey | TsgcFMXMap | Windows, macOS, iOS, Android, 장치 위치는 Windows, Android, iOS, macOS |
| C++ Builder 2007부터 13 | TsgcVCLMap과 모델 | 생성된 .hpp 헤더와 정적 라이브러리 |
| Lazarus | LCL 지도 컨트롤 | 디스크의 타일만 사용하며 타일을 다운로드할 수 없음 |
| .NET 8, 9, 10 | SgcMapControl, MapView | WinForms(net8.0-windows, net9.0-windows, net10.0-windows), Windows와 Linux의 헤드리스 PNG |
아니요. 타일, 마커, 도형은 컨트롤이 네이티브로 그리므로 웹 뷰, JavaScript 라이브러리, 배포할 브라우저 런타임이 없습니다.
OpenStreetMap, OpenTopoMap, Esri 타일과 오프라인 라우터 및 지오코더에는 필요하지 않습니다. MapTiler, Thunderforest, Stadia 타일과 상용 지오코딩 및 경로 탐색 제공자는 직접 발급한 키를 사용합니다. 각 제공자에는 고유한 이용 약관이 있으며 애플리케이션이 이를 지켜야 합니다.
예. 타일은 z/x/y 폴더, 레이어별 캐시, MBTiles 파일에서, 경로는 TsgcMapOfflineRouter에서, 주소 검색은 TsgcMapOfflineGeocoder에서 가져옵니다. MBTiles, 타일 다운로더, 오프라인 라우터와 지오코더는 Registered 에디션의 오프라인 팩에 속합니다.
GeoJSON, GPX, KML을 가져오고 내보내며, GPX 트랙 통계와 고도 색상을 지원합니다. 스트리밍 리더는 OpenStreetMap .osm.pbf 및 XML 파일도 처리하며, 오프라인 경로 그래프는 이렇게 만들어집니다. 파일 형식을 참조하세요.
모델과 VCL 컨트롤은 Delphi 7과 C++ Builder 2007부터 동작합니다. 일부 기능은 최소 버전이 더 높습니다. PNG 출력과 타일 서버는 Delphi 2009부터, 벡터 타일과 오프라인 라우터는 XE2부터, FireMonkey와 GeoJSON은 XE6부터, MBTiles와 오프라인 지오코더는 XE7부터, 온라인 서비스는 XE8부터입니다.
데모 프로젝트는 Delphi 전용이지만 컴포넌트는 C++ Builder 2007부터 13에 설치되며 똑같이 동작합니다. 위 코드 섹션의 C++ Builder 탭에서 생성된 헤더로 만든 같은 지도를 볼 수 있습니다.
예. Community 에디션은 연간 총매출이 100만 유로 미만이고 개발자가 5명 이하인 개인과 조직에 무료이며, 오프라인 팩을 제외한 모든 기능이 있습니다. .NET 패키지는 esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community입니다. 더 큰 조직에는 Registered 라이선스가 필요합니다.
소개, 개요, VCL 빠른 시작, TsgcVCLMap, 타일과 레이어, 마커와 클러스터링, 오프라인 경로 탐색, 정적 렌더링, 데모.
Delphi, C++ Builder, .NET용이며 sgcUI 제품 전체를 다룹니다.