Delphi, C++ Builder & .NET sgcUI'nin parçası

sgcMaps, Delphi, C++ Builder & .NET için Yerel Haritalar

Uygulamanıza tarayıcı denetimi ya da tek satır JavaScript olmadan gerçek bir harita koyun. sgcMaps raster ve vektör karoları kendisi çizer, binlerce kümelenmiş işaretçiyi, rotayı ve bölgeyi gösterir, adresleri coğrafi olarak kodlar ve yerel karolarla ve çevrimdışı bir yönlendiriciyle çevrimdışı çalışmaya devam eder.

VCL, FireMonkey, Lazarus, WinFormsTarayıcı denetimi yok, JavaScript yokÜcretsiz .NET Community sürümüsgcUI Enterprise içinde yer alır
Kırmızı ve mavi konum işaretçileriyle vektör karolardan çizilen merkezi Madrid'i gösteren TsgcVCLMap

Bir Harita Uygulamasının İhtiyaç Duyduğu Her Şey

On üç özellik, her biri gerçek API'si ve arkasındaki yardım konusuyla.

Karolar ve harita verileri

Harita denetimi her karoyu kendisi çizer; bir karo sunucusundan, bir vektör kaynağından veya diskteki dosyalardan.

Formunuzda gerçek bir harita, içinde tarayıcı yok

Karolar ve harita verileri

Formunuzda gerçek bir harita, içinde tarayıcı yok

Çoğu harita bileşeni bir web görünümünü ve bir JavaScript kütüphanesini sarar, bu yüzden masaüstü uygulamanız bir tarayıcı taşımak zorunda kalır. sgcMaps böyle yapmaz. TsgcVCLMap ve TsgcFMXMap karoları kendi tuvallerine indirir, önbelleğe alır ve çizer, fare tekerleği yakınlaştırmasını ve sürükleyerek kaydırmayı yönetir ve olağan Delphi olayları oluşturur. Haritanız diğerleri gibi yerel bir denetimdir: yerleşir, formla birlikte temalanır ve kodunuzun geri kalanı gibi hata ayıklanır. Dağıtılacak veya güvenliği sağlanacak ek bir süreç yoktur ve harita, uygulamanızın çalıştığı her makinede aynı davranır.

  • Layers koleksiyonu her biri kendi TileSourceType değerine sahip bir veya daha fazla TsgcMapLayer öğesi tutar
  • TsgcFMXMap Delphi XE6'dan itibaren Windows, macOS, iOS ve Android'de çalışır
  • Bir Lazarus LCL denetimi karoları diskten gösterir
  • .NET'te WinForms için SgcMapControl ve arayüzsüz MapView tek bir motoru paylaşır
  • Arapça ve İbranice için sağdan sola: yakınlaştırma düğmeleri, katman değiştirici, pusula, ölçek çubuğu ve atıf karşı tarafa geçer, harita coğrafi yönelimini korur
Yardım konusunu okuyun
Tek özellikle bir karo sağlayıcısı seçin

Karolar ve harita verileri

Tek özellikle bir karo sağlayıcısı seçin

Bir altlık harita seçmek karo sunucusu belgelerini okumak anlamına gelmemelidir. Bir katmanda Provider ayarlayın ve sgcMapApplyProvider çağırın: katman o sağlayıcının URL şablonunu, azami yakınlaştırmasını ve atıf metnini alır. OpenStreetMap, OpenTopoMap, Esri World Imagery ve Esri World Street anahtarsız çalışır. MapTiler, Thunderforest ve Stadia kendi API anahtarınızı alır. Kendi karo sunucunuz bir URL şablonu uzaklığındadır. Her katmanın kendi sağlayıcısı vardır; bu yüzden bir uydu katmanı ve bir sokak katmanı aynı haritada durabilir ve kullanıcı haritanın kendisinde aralarında geçiş yapar.

  • Anahtarsız: mtpOpenStreetMap, mtpOpenTopoMap, mtpEsriWorldImagery, mtpEsriWorldStreet
  • Anahtarınızla: mtpMapTilerStreets, mtpMapTilerSatellite, mtpThunderforestCycle, mtpThunderforestTransport, mtpStadiaAlidadeSmooth
  • URLTemplate ile mtpCustom herhangi bir {z}/{x}/{y} sunucusunu okur
  • Sağlayıcının atfı sizin için haritaya çizilir
  • ShowLayerSwitcher haritaya bir katman düğmesi koyar
Yardım konusunu okuyun
Her boyutta keskin kalan vektör karolar

Karolar ve harita verileri

Her boyutta keskin kalan vektör karolar

Raster karolar ölçeklendirildiğinde bulanıklaşır ve her stil değişikliği sunucudan yeni görüntüler demektir. Vektör karolarda denetim geometriyi alır, yolları, suyu, binaları ve etiketleri kendisi çizer; böylece yüksek DPI ekranlarda ve dışa aktarılan görüntülerde metin net kalır. Bir katmanı Mapbox Vector Tile sunucusuna yöneltin ve yerleşik stili kullanmak için VectorStyleFile alanını boş bırakın ya da markanıza uymak için bir MapLibre veya Mapbox GL stil dosyası yükleyin. Vektör katmanları VCL ve FireMonkey denetiminde aynı şekilde çalışır.

  • mtsVectorHTTP bir vektör karo sunucusunu okur, Delphi XE2'den itibaren
  • mtsVectorMBTiles yerel bir vektör MBTiles dosyasını (çevrimdışı paket) okur
  • TsgcMapVectorStyle bir stili LoadFromFile veya LoadFromJSON ile yükler
  • Çözme ve çizme işlemi TsgcMapTileSource_MVT içinde, düz Delphi kodunda yer alır
Yardım konusunu okuyun

Karolar ve harita verileri Yalnızca Kayıtlı

Ağ gittiğinde de çalışmaya devam edin

Bir bodrumdaki saha teknisyeni, denizdeki bir gemi veya bir fabrika ağı bir karo sunucusuna bağımlı olamaz. sgcMaps karoları diskten, webden okuduğu gibi okur. Bir katmana bir CacheFolder verin; getirdiği her karo bir sonraki çalıştırma için saklanır. Eksiksiz bir çevrimdışı paket için TsgcMapTileDownloader bir alanı ve bir yakınlaştırma aralığını önceden bir klasöre veya bir MBTiles dosyasına getirir.

  • mtsFolder PNG veya JPEG karoların z/x/y klasörünü okur
  • mtsMBTiles bir raster MBTiles dosyasını okur, Delphi XE7'den itibaren (FireDAC SQLite)
  • CountTiles indirmeye başlamadan önce boyutunu söyler; DelayMS ve OnProgress onu nazik ve görünür tutar
  • Toplu indirmeler sağlayıcının koşullarına uymalıdır: OpenStreetMap karoları yalnızca etkileşimli görüntüleme içindir

Community sürümü z/x/y karo klasörlerini okur ve katman başına CacheFolder'ı korur. Karo indirici ve MBTiles dosyaları çevrimdışı pakete aittir.

Yardım konusunu okuyun

İşaretçiler, şekiller ve geometri

Kendi verilerinizi haritaya koyun, her yakınlaştırma düzeyinde okunaklı tutun ve arkasındaki hesabı yapın.

İşaretçiler, şekiller ve geometri

Binlerce işaretçi, yine de okunaklı

Bir filo, bir mağaza ağı veya bir sensör ızgarası hızla üst üste binen iğnelerden oluşan bir buluta dönüşür. Kümelemeyi açın; yakın işaretçiler numaralı tek bir balonda birleşir ve kullanıcı yakınlaştırdıkça her yakınlaştırma düzeyinde yeniden hesaplanarak yeniden ayrılır. Her işaretçi kendi açılır penceresini, ipucunu ve simgesini taşır; tıklamalar, sürüklemeler ve küme tıklamaları olay olarak gelir, böylece harita bir resim olmaktan çıkıp iş akışınızın parçası olur. İşaretçiler verilerinizden bir döngüyle eklenebilir veya GeoJSON, GPX ve KML dosyalarından içe aktarılabilir; ClearMarkers hepsini tek çağrıyla sıfırlar.

  • GridSize, MinClusterSize ve ZoomOnClick ile MarkerOptions.Clustering
  • İşaretçi başına PopupText, TooltipText ve IconBitmap
  • OnMarkerClick, OnClusterClick ve OnMarkerDragEnd olayları
  • Toplu yüklemelerin etrafında BeginUpdate ve EndUpdate; FitToMarkers hepsini çerçeveler
  • MarkerAtScreen ve ClusterAtScreen herhangi bir pikseli test eder
Yardım konusunu okuyun
Rotalar, bölgeler ve ısı haritaları tek haritada

İşaretçiler, şekiller ve geometri

Rotalar, bölgeler ve ısı haritaları tek haritada

Çoğu harita ekranı iğnelerden fazlasına ihtiyaç duyar: planlanan teslimat rotası, bir deponun hizmet verdiği alan, bir müşterinin çevresindeki yarıçap, siparişlerin geldiği yerler. sgcMaps hepsini harita modelinin öğeleri olarak, işaretçilerinizle aynı koordinatlarda çizer. Şekiller düzenlenebilir yapılabilir; bir kullanıcı fareyle bir bölgenin köşe noktalarını sürükleyebilir ve düzenleme bittiğinde kodunuza haber verilir. Etiketler, bir koordinata kendi yazı tipi, rengi ve arka planıyla metin yerleştirir; bu da bölge adlarını ve rota numaralarını haritaya bağlı tutar.

  • Dashed ve Geodesic çizgilerle AddPolyline
  • AddHole ile AddPolygon, ayrıca AddRectangle, AddCircle (RadiusMeters) ve AddLabel
  • Editable şekiller değişiklikleri OnShapeEdited ile bildirir
  • TsgcMapHeatmap, AddPoint ile ağırlıklı noktaları ve bir MaxIntensity değerini alır
Yardım konusunu okuyun

İşaretçiler, şekiller ve geometri

Coğrafi hesap zaten yazılmış

Bu araç bölgenin içinde mi? En yakın depo ne kadar uzakta? Rotanın hangi noktası müşteriye en yakın? Bu sorular her harita uygulamasında çıkar ve kutuplara yakın ya da uzun mesafelerde yanlış yapılması kolaydır. Geometri birimi bunları WGS84 küresi üzerinde, haritası hiç olmayan bir servisten de çağırabileceğiniz düz fonksiyonlarla yanıtlar. Fonksiyonlar düz TsgcMapCoord kayıtlarını alır ve kendi katmanlarınızı çizerken sgcMapLatLonToPixel ile sgcMapPixelToLatLon ekran ve dünya koordinatları arasında dönüştürür.

  • Metre cinsinden sgcMapDistance, sgcMapInitialBearing ve sgcMapDestinationPoint
  • Coğrafi çitler için sgcMapPointInPolygon ve sgcMapPointInPolygonWithHoles
  • sgcMapNearestPointOnPolyline bir konumu bir rotaya yaslar
  • Akıcı, hafif çizgiler için sgcMapGeodesicInterpolate ve sgcMapSimplify
Yardım konusunu okuyun

Arama ve rota hesaplama

Adresleri bulun ve rotaları çevrimiçi sağlayıcılarla ya da API anahtarı olmadan tamamen çevrimdışı planlayın.

Arama ve rota hesaplama

Coğrafi kodlama, yol tarifi ve yerler tek API'de

Her coğrafi kodlama ve rota hesaplama sağlayıcısının kendi REST biçimi, anahtarları ve huyları vardır. Hizmet bileşenleri bunları gizler: bir sağlayıcı seçersiniz, gerekiyorsa anahtarınızı ayarlarsınız ve aynı metotları eşzamanlı veya eşzamansız çağırırsınız. Bir sağlayıcıdan diğerine geçmek bir özellik değişikliğidir, yeniden yazım değil; sonuçlar haritaya konmaya hazır Delphi nesneleri olarak gelir. Her bileşen TsgcMapService temel sınıfını paylaşır, bu yüzden ApiKey, UserAgent ve LastError her sağlayıcı için aynı şekilde çalışır.

  • TsgcMapGeocoder: Nominatim, Google, HERE, Azure Maps, Mapbox, OpenRouteService ve Geoapify
  • TsgcMapDirections: OSRM, OpenRouteService, Google Routes, HERE, Azure Maps, Mapbox ve Geoapify
  • Adres otomatik tamamlama için TsgcMapPlaces, ayrıca TsgcMapElevation ve TsgcMapTimeZone
  • GeocodeAsync, GetRouteAsync ve SuggestAsync arayüzü duyarlı tutar; hatalar OnError ile gelir
Yardım konusunu okuyun

Arama ve rota hesaplama Yalnızca Kayıtlı

İnternet ve anahtar olmadan rotalar ve adres araması

Çevrimiçi rota hesaplama tam da saha uygulamalarının kullanıldığı yerde başarısız olur ve her istek para tutabilir. Çevrimdışı yönlendirici araba, bisiklet ve yaya rotalarını, bir OpenStreetMap çıkarımından bir kez oluşturulan bir rota grafiğinden cihazın üzerinde hesaplar. Çevrimdışı coğrafi kodlayıcı yer adlarını arar ve bir tıklamayı SQLite'taki bir GeoNames dizininden ters coğrafi kodlar. İkisi de ağ, hesap ve istek başına ücret olmadan çalışır. Yönlendirici ve coğrafi kodlayıcı görsel olmayan bileşenlerdir; bu yüzden bir Windows servisi veya bir konsol aracı ekranda harita olmadan rota ve adres isteklerini yanıtlayabilir.

  • TsgcMapOfflineRouter, TsgcMapRouteGraphBuilder ile .osm.pbf dosyasından oluşturulan bir grafikten GetRoute isteğini yanıtlar
  • sgcMapAddRouteToPolylines sonucu haritaya çizer
  • TsgcMapGeoIndexBuilder ile üretilen bir dizin üzerinde ReverseGeocode ile TsgcMapOfflineGeocoder
  • Grafik ve dizin için komut satırı oluşturucular Tools klasöründedir

Community sürümü çevrimiçi hizmetleri kullanır; çevrimdışı yönlendirici ve coğrafi kodlayıcı çevrimdışı pakete aittir.

Yardım konusunu okuyun

Dosyalar, çizim ve mobil

Coğrafi verileri diğer araçlarla değiş tokuş edin, ekranın olmadığı yerde haritaları çizin ve haritayı telefona taşıyın.

Dosyalar, çizim ve mobil

Kullanıcılarınızın zaten sahip olduğu dosyaları açın

Müşteriler bir GPS saatinden izler, bir GIS aracında çizilmiş bölgeler veya başka bir sistemden bir KML gönderir. sgcMaps GeoJSON, GPX ve KML dosyalarını doğrudan harita modeline okur ve yazar; içe aktarma bir çağrı, dışa aktarma bir diğeridir. GPX izleri istatistikleriyle gelir ve yüksekliğe göre renklendirilebilir; akışlı bir okuyucu büyük OpenStreetMap çıkarımlarını belleğe yüklemeden gezer. Dışa aktarmalar aynı fonksiyonları tersine kullanır; bu yüzden bir kullanıcının haritada çizdiği bölgeler GeoJSON veya KML olarak kaydedilip diğer GIS araçlarında açılabilir.

  • sgcMapLoadGeoJSONFile ve sgcMapSaveGeoJSONFile, Delphi XE6'dan itibaren
  • TrackStats (TotalAscent, TotalDescent) ve ColorByElevation ile TsgcMapGPX
  • sgcMapLoadKMLFile ve sgcMapSaveKMLFile
  • OpenStreetMap okuyucusu .osm.pbf ve XML dosyalarını olaylarla akıtır
  • sgcMapGeoJSONAsText haritanın GeoJSON'ını dize olarak döndürür
Yardım konusunu okuyun
Harita görüntülerini bir sunucuda çizin

Dosyalar, çizim ve mobil

Harita görüntülerini bir sunucuda çizin

Rotalı teslimat irsaliyeleri, günün olaylarını içeren günlük bir rapor, bir web sayfası için küçük resim: birçok harita hiçbir pencerede gösterilmez. Aynı denetim, görünür olmadan, bir konsol uygulamasından veya bir Windows servisinden PNG veya bitmap olarak çizim yapar. Görüntüyü göndermeden önce her karonun gelip gelmediğini denetleyebilirsiniz; böylece yavaş bir karo sunucusu bir müşteri belgesinde gri bir kareye dönüşmez. Sunucu tarafı çizim etkileşimli denetimle aynı katmanları, işaretçileri ve şekilleri kullanır; bu yüzden ekranda tasarlanan bir harita PNG'de de aynı görünür.

  • SaveToPNG ve SaveToPNGFile, Delphi 2009'dan itibaren
  • Kendi işlem hattınız için RenderToBitmap ve SaveToBMPFile
  • LastRenderMissingTiles kullanılamayan karoları bildirir
  • .NET'te MapView.RenderToPng Linux'ta da çalışır
Yardım konusunu okuyun

Dosyalar, çizim ve mobil

Masaüstünde ve mobilde aynı harita

Bir sevk görevlisi Windows masaüstünde planlar, sürücü planı bir telefonda izler. TsgcFMXMap aynı modeli, katmanları, işaretçileri, şekilleri ve hizmetleri Windows, macOS, iOS ve Android üzerinde FireMonkey'e getirir; böylece VCL haritası için yazdığınız kod aktarılır. TsgcMapLocation cihazın konumunu okur, böylece harita kullanıcıya ortalanabilir ve onu izleyebilir. Katman başına karo önbelleği mobilde de çalışır; telefon zaten yüklediği alanları göstermeye devam eder.

  • TsgcFMXMap, Delphi XE6'dan itibaren, TsgcVCLMap ile aynı koleksiyonlarla
  • Windows, Android, iOS ve macOS'ta TsgcMapLocation
  • FMX demosu karoları, işaretçileri ve konumu tek formda gösterir
  • Özellik başına asgari Delphi sürümleri kurulum konusunda listelenir
Yardım konusunu okuyun

Erişilebilirlik

Ekran okuyucular ve klavye için UI Automation, kurulum gerektirmeden.

Erişilebilirlik

Klavyenin ulaşabildiği ve UI Automation'ın sunduğu bir harita

sgcMaps haritayı bir metin alternatifiyle, işaretçileri bir liste ve katmanları bir liste olarak Microsoft UI Automation'a sunar; her katman görünür olup olmadığını bildirir. İşaretçilere klavyeyle ulaşılabilir.

  • Ok tuşları haritayı kaydırır, artı ve eksi tuşları yakınlaştırır ve Home başlangıç görünümüne döner
  • Page Up ve Page Down önceki veya sonraki işaretçiye geçer, Enter odaktaki işaretçiyi etkinleştirir ve Esc işaretçi odağını temizler
  • Harita odaktayken görünür bir odak halkası gösterir
  • .NET'te sgcMaps bir WinForms denetimidir, bu yüzden harita WinForms üzerinde erişilebilirdir

Erişilebilirlik her sürümde, ücretsiz Community sürümü dahil, varsayılan olarak açıktır: VCL'de Delphi 7'den Delphi 13'e kadar her Delphi ve C++Builder sürümünde, Windows'ta FireMonkey'de ve WinForms üzerinde. Delphi ve C++Builder'da AccessibleName ve AccessibleDescription UI Automation'a sunulan adı ve açıklamayı belirler, .NET'te ise her çerçevenin standart erişilebilir adı ve yardım metni aynı işi yapar. Bkz. erişilebilirlik uygunluk raporları. Harita görüntüsü yalnızca merkezi ve yakınlaştırma düzeyiyle tanımlanır ve harita çizicisi Windows yüksek karşıtlığını izlemez, çünkü harita görüntüsü sağlayıcının karo görüntüleridir.

Yardım konusunu okuyun

sgcMaps iş başında

sgcUI paket demolarında sgcMaps: yerleşik simüle verilerle çevrimdışı çalışan eksiksiz uygulamalar.

sgcMaps ile Kimler Geliştirme Yapıyor

Saha servisi ve lojistik

Teknisyenlerin ve sürücülerin haritaya kapsama alanının zayıf olduğu yerde ihtiyacı vardır. Bir bölgenin karolarını önceden hazırlayın, araba rotalarını çevrimdışı yönlendiriciyle cihazın üzerinde hesaplayın ve adresleri çevrimdışı coğrafi kodlayıcıyla bulun. Ofise döndüğünüzde aynı kod planlanan rotaları ve teslimat bölgelerini çizer ve teslimat irsaliyesi için her rotanın bir PNG'sini üretir.

  • Çevrimdışı çalışır
  • Çevrimdışı rota hesaplama
  • Rotalar ve bölgeler
  • Harita görüntüleri
OfflineServices demosunu çalıştırın

Varlık ve filo takibi

Bir kontrol odası yüzlerce aracı, makineyi veya sensörü aynı anda izler. Kümeleme, ülke düzeyinde haritayı okunaklı tutar ve sokak düzeyinde tek iğnelere ayrılır. Bir ısı haritası olayların nerede yoğunlaştığını gösterir, çokgen içinde nokta ile coğrafi çit denetimleri uyarı üretir ve işaretçi tıklama olayları varlığın kaydını kendi formlarınızda açar.

  • Kümeleme
  • Isı haritaları
  • Geometri
  • Olaylar
MapFeatures demosunu çalıştırın

Hafif GIS ve açık hava uygulamaları

Planlama araçları, spor uygulamaları ve ölçüm yazılımları GPX izleri, KML katmanları ve GeoJSON bölgeleriyle yaşar. sgcMaps üçünü de içe ve dışa aktarır, iz istatistiklerini ve yükseklik renklerini gösterir ve sonucu topografik bir altlık haritaya koyar. FireMonkey denetimi aynı özellikleri sahadaki bir tablete veya telefona taşır. İz istatistikleri bir rotanın toplam çıkışını ve inişini bir bakışta verir.

  • GeoJSON, GPX ve KML
  • Topografik karolar
  • FireMonkey
OfflineMap demosunu çalıştırın

A Map in a Few Lines

The same API in Delphi, C++ Builder and C#: OpenStreetMap tiles, three markers, a geodesic line and a radius, fitted to the markers and saved as PNG.

A VCL map built in code: a cached OpenStreetMap layer, markers, a geodesic line and a circle, then a PNG of the result.

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;

Yardım konusunu okuyun →

The same map in C++ Builder with the generated sgcMaps headers.

#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);
}

Yardım konusunu okuyun →

The headless MapView renders the same map to a PNG file, on Windows or 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

Yardım konusunu okuyun →

sgcMaps Demolarını Çalıştırın

sgcMaps ile yedi Delphi demosu ve üç .NET demosu gelir. C++ Builder demo projesi yoktur.

Yalnızca Kayıtlı OfflineMap

Klasör, MBTiles ve çevrimiçi karolar, işaretçiler ve şekiller, ayrıca GeoJSON, GPX ve KML içe aktarma.

MapFeatures

Sağlayıcılar ve API anahtarları, işaretçi kümeleme, şekil düzenleme, ısı haritaları ve görüntü dışa aktarma.

Services

Çevrimiçi sağlayıcılarla yer arama, coğrafi kodlama, yol tarifi, yükseklik, saat dilimleri ve cihaz konumu. Delphi XE8 ve sonrası.

Yalnızca Kayıtlı OfflineServices

Bir GeoNames dizini ve bir OpenStreetMap rota grafiği oluşturun, sonra ağ olmadan yer arayın ve araba, bisiklet veya yürüyüş rotası hesaplayın.

StaticRender

StaticRender

Pencere olmadan bir haritayı PNG veya BMP dosyasına çizen bir konsol programı.

FMX

Karoları, işaretçileri ve cihaz konumuyla FireMonkey haritası, Windows, macOS, iOS ve Android için. Delphi XE6 ve sonrası.

VectorTiles

VectorTiles

Yerleşik stille veya kendi stil dosyanızla çizilen bir vektör karo sunucusu, her yakınlaştırmada net etiketlerle.

WinFormsDemo

Sağlayıcılar, işaretçiler ve şekillerle bir WinForms penceresinde .NET SgcMapControl.

Yalnızca Kayıtlı OfflineDemo

.NET çevrimdışı paketi: yerel veri dosyalarından çevrimdışı karolar, rota hesaplama ve coğrafi kodlama.

ConsoleRenderDemo

ConsoleRenderDemo

Bir haritayı arayüzsüz MapView ile PNG olarak çizen bir .NET konsolu, Windows veya Linux'ta.

Derlenmiş demolar

Her sgcUI ürününün çalıştırmaya hazır yürütülebilir dosyaları, kurulum gerektirmez.

sgcUI_bin.zip dosyasını indirin →

sgcMaps Hangi Sürümlerde Yer Alıyor

sgcMaps, sgcUI Enterprise'ın parçasıdır ve ayrıca tek başına da satılır. sgcMaps ayrıca All-Access paketine de dahildir.

sgcMaps tek paket

€149 / geliştirici, tam kaynak kodu, 1 yıl güncelleme.

sgcMaps satın alın → Fiyatlandırmayı görün →

sgcUI Enterprise

Tüm 14 sgcUI ürünü, €699 fiyatından başlayarak.

Enterprise sürümüne bakın →

Ücretsiz Community sürümü (Delphi yükleyicisi ve NuGet üzerinde esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community) çevrimdışı paket dışındaki her özelliğe sahiptir. esegece.sgcMaps.Offline paketi yalnızca Kayıtlıdır. Bir proje ya Community ya da Kayıtlı paketlere başvurur, ikisine birden asla.

ÖzellikCommunity (ücretsiz)Kayıtlı
VCL, FireMonkey ve WinForms harita denetimleri✓✓
Karo sağlayıcıları, HTTP ve vektör karo sunucuları✓✓
z/x/y karo klasörleri ve katman başına karo önbelleği✓✓
İşaretçiler, kümeleme, şekiller, etiketler ve ısı haritaları✓✓
Geometri fonksiyonları✓✓
GeoJSON, GPX ve KML içe ve dışa aktarma✓✓
Çevrimiçi coğrafi kodlama, yol tarifi, yerler, yükseklik ve saat dilimleri✓✓
PNG'ye statik çizim✓✓
Çevrimdışı paketler için karo indirici−✓
MBTiles dosyaları (raster ve vektör)−✓
Çevrimdışı yönlendirici ve çevrimdışı coğrafi kodlayıcı−✓

Desteklenen Framework'ler ve Platformlar

sgcMaps İçindeki Bileşenler

TsgcVCLMap and TsgcFMXMap

VCL ve FireMonkey için harita denetimleri, ayrıca karoları diskten okuyan bir Lazarus LCL denetimi.

Model koleksiyonları

Layers, Markers, Polylines, Polygons, Rectangles, Circles, Labels ve Heatmaps, her çerçeve tarafından paylaşılır.

Çevrimiçi hizmetler

TsgcMapGeocoder, TsgcMapDirections, TsgcMapPlaces, TsgcMapElevation and TsgcMapTimeZone.

Çevrimdışı araçlar

TsgcMapRouteCalculator, TsgcMapOfflineRouter, TsgcMapOfflineGeocoder, TsgcMapGeoIndexBuilder and TsgcMapTileDownloader.

TsgcMapLocation ve geometri yardımcıları

Cihaz konumu ve sgcMapDistance, yön açısı, varış noktası, jeodezik enterpolasyon, çokgen içinde nokta ve çizgi basitleştirme.

.NET haritaları

WinForms için SgcMapControl ve PNG'ye çizen arayüzsüz motor MapView, Linux'ta da.

HedefBileşenPlatformlar
Delphi 7'den 13'e, VCLTsgcVCLMap ve modelWin32 ve XE2'den itibaren Win64
Delphi XE6'dan 13'e, FireMonkeyTsgcFMXMapWindows, macOS, iOS ve Android, cihaz konumu Windows, Android, iOS ve macOS'ta
C++ Builder 2007'den 13'eTsgcVCLMap ve modelÜretilen .hpp başlıkları ve statik kütüphaneler
LazarusLCL harita denetimiYalnızca diskten karolar, karo indiremez
.NET 8, 9 ve 10SgcMapControl, MapViewWinForms (net8.0-windows, net9.0-windows, net10.0-windows), Windows ve Linux'ta arayüzsüz PNG

Sık Sorulan Sorular

Hayır. Karoları, işaretçileri ve şekilleri denetim yerel olarak çizer; bu yüzden dağıtılacak bir web görünümü, JavaScript kütüphanesi veya tarayıcı çalışma zamanı yoktur.

OpenStreetMap, OpenTopoMap ve Esri karoları için, ayrıca çevrimdışı yönlendirici ve coğrafi kodlayıcı için gerekmez. MapTiler, Thunderforest ve Stadia karoları ile ticari coğrafi kodlama ve rota hesaplama sağlayıcıları kendi anahtarınızı kullanır. Her sağlayıcının uygulamanızın uyması gereken kendi kullanım koşulları vardır.

Evet. Karolar z/x/y klasörlerinden, katman başına bir önbellekten veya MBTiles dosyalarından, rotalar TsgcMapOfflineRouter ile ve adres araması TsgcMapOfflineGeocoder ile gelebilir. MBTiles, karo indirici ve çevrimdışı yönlendirici ile coğrafi kodlayıcı Kayıtlı sürümün çevrimdışı paketinin parçasıdır.

İçe ve dışa aktarma için GeoJSON, GPX ve KML; GPX iz istatistikleri ve yükseklik renkleriyle. Akışlı bir okuyucu ayrıca OpenStreetMap .osm.pbf ve XML dosyalarını işler; çevrimdışı rota grafiği böyle oluşturulur. Bkz. Dosya Biçimleri.

Model ve VCL denetimi Delphi 7 ve C++ Builder 2007'den itibaren çalışır. Bazı özelliklerin asgari sürümü daha yüksektir: PNG çıktısı ve karo sunucuları Delphi 2009'dan, vektör karolar ve çevrimdışı yönlendirici XE2'den, FireMonkey ve GeoJSON XE6'dan, MBTiles ve çevrimdışı coğrafi kodlayıcı XE7'den, çevrimiçi hizmetler XE8'den itibaren.

Demo projeleri yalnızca Delphi içindir, ancak bileşenler C++ Builder 2007'den 13'e kurulur ve aynı şekilde çalışır. Yukarıdaki kod bölümündeki C++ Builder sekmesi, üretilen başlıklarla kurulmuş aynı haritayı gösterir.

Evet. Community sürümü, yıllık brüt geliri 1 milyon EUR'un altında olan ve en fazla 5 geliştiricisi bulunan bireyler ve kuruluşlar için ücretsizdir. Çevrimdışı paket dışındaki her özelliğe sahiptir. .NET'te paketler esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community ve esegece.sgcMaps.WinForms.Community paketleridir. Daha büyük kuruluşların Kayıtlı bir lisansa ihtiyacı vardır.

sgcMaps Yardımı

3,000+Geliştirici
20+Yıl
761+Bileşen
30+API Entegrasyonu
5Platform
30 Günlük Para İade GarantisiMemnun kalmadınız mı? Satın alımdan sonraki 30 gün içinde tam para iadesi talep edin. İade politikasına bakın

sgcMaps'i Bugün Deneyin

sgcUI denemesi, çevrimdışı paketiyle sgcMaps'i ve diğer tüm sgcUI ürünlerini içerir. .NET Community sürümü NuGet üzerinde ücretsizdir.