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, WMS ve WMTS sunucularından katmanlar ekler, 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, WinForms, WPF, AvaloniaTarayıcı denetimi yok, JavaScript yokÜcretsiz .NET Community sürümüsgcUI Enterprise içinde yer alır
Her yerde yerelHaritayı kendileri çizen VCL, FireMonkey, Lazarus, WinForms, WPF ve Avalonia denetimleri.
Verileriniz haritadaKoddan veya dosyalardan kümelenmiş işaretçiler, rotalar, bölgeler, daireler, etiketler ve ısı haritaları.
Çevrimdışı çalışırDiskten karolar, çevrimdışı bir yönlendirici ve çevrimdışı bir coğrafi kodlayıcı, API anahtarı gerekmez.
Görüntü olarak haritalarBir konsoldan, bir servisten veya bir Linux .NET sürecinden PNG dosyaları çizin.
ÖNE ÇIKAN ÖZELLİKLER
Bir Harita Uygulamasının İhtiyaç Duyduğu Her Şey
On sekiz ö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 WMS veya WMTS hizmetinden, bir vektör kaynağından veya diskteki dosyalardan.
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 Windows'ta Delphi XE6'dan, macOS, iOS ve Android'de Delphi 10.4'ten itibaren çalışır
Bir Lazarus LCL denetimi karoları diskten gösterir
.NET'te WinForms için SgcMapControl, WPF için TsgcWpfMap, Avalonia 12 için TsgcAvaloniaMap 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
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.
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
mtsVectorPMTiles vektör karoları bir PMTiles arşivinden, yerel bir dosyadan veya bir URL'den okur (çevrimdışı paket)
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
Belediyeler, altyapı kuruluşları ve haritacılık kurumları arazi kullanımını, kadastroyu ve ortofotoları z/x/y karoları olarak değil, OGC web hizmetleri olarak yayımlar. TileSourceType değerini mtsWMS veya mtsWMTS yapın; katman görüntülerini hizmetten ister, bir temel haritanın üzerinde saydam bir bindirme olarak ya da temel harita olarak. Capabilities okuyucuları bir hizmetin sunduğu katmanları listeler ve katmanı sizin için yapılandırır, böylece kullanıcılarınız istek parametreleri yazmak yerine bir katmanı başlığıyla seçer.
mtsWMS, WMS 1.3.0 veya 1.1.1 GetMap isteklerini gönderir; Layers, Styles, ImageFormat ve Transparent katmanın WMS seçeneklerinde bulunur
mtsWMTS, KVP ve REST hizmetlerini katmanın WMTS seçenekleri üzerinden okur
TsgcMapWMSCapabilities ve TsgcMapWMTSCapabilities capabilities belgesini yükler, ApplyToLayer ise ondan bir katmanı yapılandırır
Sunucudan gelen bir istisna belgesi metniyle birlikte OnTileError olayına ulaşır
.NET'te TileSourceType.Wms ve TileSourceType.Wmts, WmsCapabilities ve WmtsCapabilities ile
Her sürümde, ücretsiz Community sürümü dahil, Delphi 2009'dan itibaren. Harita Web Mercator'da kalır: WMS katmanları EPSG:3857 ile istenir, WMTS katmanları GoogleMapsCompatible gibi bir Web Mercator karo matris kümesi gerektirir ve GetFeatureInfo desteklenmez.
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 ile MBTiles ve PMTiles dosyaları çevrimdışı pakete aittir.
Bir PMTiles arşivi, eksiksiz bir karo piramidini tek bir dosyada tutar; bu dosyayı bir dizüstü bilgisayara kopyalarsınız veya herhangi bir statik web sunucusuna koyarsınız, çalıştırılacak bir karo sunucusu gerekmez. sgcMaps arşivi yerel bir dosyadan ya da doğrudan bir web sunucusundan HTTP range istekleriyle okur ve okuduğu dizinleri bir önbellekte tutar, böylece ağdan yalnızca görünümdeki karolar geçer.
PNG ve JPEG raster arşivleri için mtsPMTiles, Mapbox Vector Tile arşivleri için mtsVectorPMTiles
TileSourcePath bir dosya adı ya da bir http veya https URL'si alır
TsgcMapTileSource_PMTiles arşivin yakınlaştırma aralığını, sınırlarını, merkezini ve meta verilerini bildirir
PMTiles sürüm 3; WebP karoları içeren arşivler desteklenmiyor olarak bildirilir
Delphi XE2'den itibaren ve .NET için Kayıtlı esegece.sgcMaps paketinde
PMTiles, MBTiles gibi çevrimdışı pakete aittir; bu yüzden Kayıtlı sürümdedir ve ücretsiz Community sürümünde yoktur.
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
Ç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
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
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
İ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.
Coğrafi verileri diğer araçlarla değiş tokuş edin, ekranın olmadığı yerde haritaları çizin ve haritayı bir telefona, bir WPF penceresine veya bir Avalonia penceresine 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
Kamuya açık coğrafi veriler hâlâ Esri shapefile olarak dağıtılır ve mekânsal veritabanları geometriyi Well Known Text olarak değiş tokuş eder. TsgcMapShapefile, bir shapefile'ın noktalarını, çizgilerini ve çokgenlerini öznitelik tablosuyla birlikte içe aktarır, böylece her işaretçi geldiği kaydı gösterebilir. WKT ve PostGIS'in yazdığı EWKT okunur ve yazılır; bu, bir bölgeyi harita ile veritabanınızın bir geometri sütunu arasında taşımanın en basit yoludur.
LoadFromFile, .shp dosyasını .shx, .dbf, .prj ve .cpg dosyalarıyla birlikte okur; OnItem her öznitelik satırını alır ve LabelField noktaların açılır pencere metnini belirler
WGS84, ETRS89 veya NAD83 derece cinsinden ya da Web Mercator'da bir .prj doğrudan yüklenir, .prj olmayan bir dosya ise WGS84 olarak okunur
Başka herhangi bir projeksiyon, OnTransform işleyiciniz koordinatları dönüştürmediği sürece açık bir hata verir
sgcMapLoadWKT ve TsgcMapWKT, POINT, LINESTRING, POLYGON, bunların MULTI biçimlerini ve GEOMETRYCOLLECTION'ı derece veya Web Mercator metre cinsinden okur, AsText ise haritayı geri yazar
Her sürümde Delphi 7'den itibaren; .NET'te ShapefileFormat ve WktFormat, bir Transform geri çağrısıyla
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
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, Windows'ta Delphi XE6'dan, macOS, iOS ve Android'de Delphi 10.4'ten itibaren (macOS ARM Delphi 11'den itibaren), TsgcVCLMap ile aynı koleksiyonlara sahiptir
Windows, Android, iOS ve macOS'ta TsgcMapLocation
FMX demosu karoları, işaretçileri ve konumu tek bir formda gösterir; FMX Mobile demosu ise telefonlar ve tabletler için düzenlenmiştir
Çerçevesiz çekirdek, karo kaynaklarını, dosya biçimlerini ve çevrimdışı verileri kullanan konsol ve sunucu uygulamaları için Delphi 10.4'ten itibaren Linux 64 bit için de derlenir
Üç çalışma zamanı paketi, sgcMaps (çekirdek), sgcMapsVCL ve sgcMapsFMX; böylece bir FireMonkey uygulaması artık VCL paketlerini yüklemez
Özellik başına asgari Delphi sürümleri kurulum konusunda listelenir
TsgcWpfMap ve TsgcAvaloniaMap, .NET harita motorunu WinForms denetiminin özellikleriyle WPF'ye ve Avalonia 12'ye getirir: fare, dokunmatik ve klavyeyle kaydırma ve yakınlaştırma, katmanlar, işaretçiler, şekiller, yazdırma, PDF dışa aktarma ve UI Automation. Katmanlar ve işaretçiler XAML'de sgc önekiyle bildirilir ve görünüm modelinizin bir koleksiyonu ItemsSource aracılığıyla işaretçilere dönüşür; böylece koleksiyona bir mağaza eklemek onu haritaya koyar, işaretçisini sürüklemek ise yeni konumu geri yazar.
LatitudeMember, LongitudeMember, TooltipMember, PopupMember, ColorMember ve DraggableMember özelliklerinizi işaretçilerle eşler
SelectedItem, Zoom, Bearing, CenterLatitude ve CenterLongitude iki yönlü bağlanır
Renkler XAML'de #AARRGGBB veya #RRGGBB metni olarak yazılır
NuGet esegece.sgcMaps.Wpf (net8.0-windows'tan net10.0-windows'a) ve esegece.sgcMaps.Avalonia (net8.0'dan net10.0'a), ikisinin de ücretsiz bir Community paketi vardır
WpfDemo ve AvaloniaDemo projeleri aynı pencereyi iki çerçevede de gösterir
Önizleme, yazıcının ve PDF'in alacağı çıktıyı birebir gösterir.
Yazdırma, önizleme ve PDF
Harita görünümünü yazdırın veya erişilebilir PDF olarak dışa aktarın
Harita tek sayfaya geçerli görünümün bir resmi olarak yazdırılır: denetimle aynı alan, merkezi, yakınlaştırması, döşemeleri, katmanları, işaretleri ve şekilleriyle. Ölçek çubuğu ve atıf yazdırılır, yakınlaştırma düğmeleri, katman değiştirici ve pusula yazdırılmaz; yazdırma görünümü asla hareket ettirmez.
Print yazdırma iletişim kutusunu gösterir ya da doğrudan varsayılan yazıcıya yazdırır; ShowPrintPreview ise sayfa gezinmesi, yakınlaştırma, sayfa yapısı, yazdırma ve PDF dışa aktarma sunan bir önizleme açar
PrintSettings kağıdı, yönü, kenar boşluklarını, ölçeklemeyi ve üst bilgi ile alt bilgi metnini tutar; yazıcı, önizleme ve PDF'in hepsi bunu kullanır
ExportToPDF sayfayı etiketli tek bir resim olarak yazar, varsayılan olarak 192 dpi, merkezi, yakınlaştırmayı ve katman ile işaret sayısını veren bir alternatif metinle
TsgcUIPDFOptions içindeki PDFALevel arşivleme için PDF/A-2a veya PDF/A-3a ekler, tek başına ya da PDF/UA ile birlikte
Yazdırma ve önizleme her sürümde, ücretsiz Community sürümü dahil, VCL, FireMonkey, WinForms, WPF ve Avalonia üzerinde bulunur. FireMonkey'de yazdırma Windows ve macOS'ta, önizleme ve PDF dışa aktarma her platformda çalışır. PDF dışa aktarma için sgcUIPDF köprüsü ve lisanslı bir sgcPDF gerekir (.NET'te esegece.sgcUICore.sgcPDF NuGet paketi), bu yüzden Community sürümünde yoktur.
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 WinForms, WPF ve Avalonia harita denetimleri aynı UI Automation yapısını ve aynı klavye desteğini sunar
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, WPF ve Avalonia ü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. Yeni WPF ve Avalonia harita denetimlerini henüz kapsamayan erişilebilirlik uygunluk raporları sayfasına bakın. 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.
Aynı haritada çizilen çok çizgiler, çokgenler ve ısı haritaları.
Bir bölge, anahtarsız dört sağlayıcı, her birinin kendi atfıyla.
KULLANIM SENARYOLARI
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.
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.
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.
Delphi'de bir WMS bindirmesi ve öznitelikleriyle birlikte bir shapefile içe aktarma, ayrıca haritanın, bir katmanın ve bir işaretçinin XAML'de bildirildiği bir WPF penceresi.
Kendi karo önbelleğine sahip saydam bir WMS bindirmesi ve parkları öznitelik tablosuna göre yeşille dolduran bir shapefile. İkisi de her sürümde çalışır.
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}";
}
}
}
sgcMaps ile on bir Delphi demosu ve sekiz .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
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
Yerleşik stille veya kendi stil dosyanızla çizilen bir vektör karo sunucusu, her yakınlaştırmada net etiketlerle.
FMXMobile
Telefonlar ve tabletler için hazırlanmış FireMonkey haritası: tek parmakla kaydırma, çimdikleyerek yakınlaştırma, büyük yakınlaştırma düğmeleri, doğruluk çemberiyle konumunuz ve bir yer listesi. Delphi 10.4 ve sonrası.
OGCServices
Bir WMS veya WMTS capabilities belgesini bir URL'den ya da dosyadan yükler, katmanları listeler ve seçtiğiniz katmanı opaklık kaydırıcısıyla OpenStreetMap üzerine bindirme olarak ekler. Delphi 2009 ve sonrası.
Yalnızca Kayıtlı PMTiles
Bir dosyadan veya URL'den raster ya da vektör bir PMTiles arşivi açar, başlığını ve meta verilerini gösterir ve arşivde ortalanmış bir katman olarak ekler. Delphi XE2 ve sonrası.
ShapefileWKT
Öznitelik tablosuyla birlikte bir shapefile içe aktarır, tıklanan işaretçinin kaydını gösterir ve WKT içe ve dışa aktarır.
WinFormsDemo
Sağlayıcılar, işaretçiler ve şekillerle bir WinForms penceresinde .NET SgcMapControl.
WpfDemo
XAML'de bildirilen WPF haritası: işaretlemede temel katmanlar ve işaretçiler, ItemsSource ile işaretçi olarak bağlanan mağazalar, yakınlaştırma ve yön kaydırıcıları, yazdırma ve PDF dışa aktarma.
AvaloniaDemo
Avalonia 12 harita denetimi ve derlenmiş bağlamalarla aynı pencere.
OgcServicesDemo
OpenStreetMap temel katmanı ve bir WMS veya WMTS hizmetinden tek bir bindirme içeren WinForms harita denetimi: bir URL'den veya dosyadan capabilities belgesi yükler, katmanları listeler, seçtiğiniz katmanı opaklık kaydırıcısıyla ekler ve karo hatalarını gösterir.
Yalnızca Kayıtlı PMTilesDemo
Bir dosyadan veya URL'den açılan raster ya da vektör bir PMTiles arşivinden bir katman içeren WinForms harita denetimi; başlığı ve meta verileriyle, harita arşivde ortalanmış olarak.
ShapefileWktDemo
Öznitelik tablosuyla bir shapefile ve tıklanan işaretçinin kaydını içe aktaran WinForms harita denetimi; ayrıca bindirmelerin WKT içe ve dışa aktarması.
Yalnızca Kayıtlı OfflineDemo
.NET çevrimdışı paketi: yerel veri dosyalarından çevrimdışı karolar, rota hesaplama ve coğrafi kodlama.
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.
Delphi (VCL) için beş QuickStart demosu Demos\Maps\00.QuickStart klasöründe yer alır. PDF kılavuzu bunları adım adım anlatır: işaretçili ilk harita, kodla eklenen işaretçiler ve etiketler, şekiller, harita olayları ve bir mağaza bulucu.
Ücretsiz .NET Community sürümü (NuGet esegece.sgcMaps.Community, esegece.sgcMaps.Rendering.Community, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community, esegece.sgcMaps.Avalonia.Community) çevrimdışı paket dışındaki her özelliğe sahiptir. esegece.sgcMaps.Offline paketi yalnızca Kayıtlı sürümdedir. Bir proje ya Community ya da Kayıtlı paketlere başvurur, hiçbir zaman ikisine birden.
Özellik
Community (ücretsiz)
Kayıtlı
VCL, FireMonkey, WinForms, WPF ve Avalonia harita denetimleri
✓
✓
Karo sağlayıcıları, HTTP ve vektör karo sunucuları
✓
✓
WMS ve WMTS katmanları
✓
✓
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
✓
✓
Shapefile içe aktarma, WKT 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 ve PMTiles dosyaları (raster ve vektör)
−
✓
Çevrimdışı yönlendirici ve çevrimdışı coğrafi kodlayıcı
−
✓
PLATFORMLAR
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.
GIS biçimleri ve OGC hizmetleri
TsgcMapShapefile, TsgcMapWKT, TsgcMapWMSCapabilities, TsgcMapWMTSCapabilities ve TsgcMapTileSource_PMTiles.
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, WPF için TsgcWpfMap, Avalonia 12 için TsgcAvaloniaMap ve PNG'ye çizen arayüzsüz motor MapView, Linux'ta da.
Hedef
Bileşen
Platformlar
Delphi 7'den 13'e, VCL
TsgcVCLMap ve model
Win32, XE2'den itibaren Win64 ve Delphi 13'te ARM64EC
Delphi XE6'dan 13'e, FireMonkey
TsgcFMXMap
XE6'dan itibaren Windows; Delphi 10.4'ten itibaren macOS, iOS ve Android (macOS ARM Delphi 11'den itibaren); Windows, Android, iOS ve macOS'ta cihaz konumu
Delphi 10.4'ten 13'e, Linux 64 bit
Çerçevesiz çekirdek, harita denetimi yok
Konsol ve sunucu uygulamalarında karo kaynakları, hizmetler, dosya biçimleri ve çevrimdışı veriler
C++ Builder 2007'den 13'e
TsgcVCLMap, XE6'dan itibaren TsgcFMXMap ve model
Yalnızca Windows: Win32, XE3'ten itibaren Win64 ve C++ Builder 13'te Win64x; üretilmiş .hpp başlıkları ve statik kütüphanelerle
WinForms ve WPF (net8.0-windows, net9.0-windows, net10.0-windows), Avalonia 12 (net8.0, net9.0, net10.0), Windows ve Linux'ta arayüzsüz PNG
Delphi paketleri: sgcMaps çerçevesiz çekirdeği, sgcMapsVCL VCL haritasını, sgcMapsFMX FireMonkey haritasını içerir; tasarım zamanı paketleri dclsgcMaps ve dclsgcMapsFMX'tir. Çalışma zamanı paketleriyle derlenen ve sgcMaps listeleyen bir proje sgcMapsVCL veya sgcMapsFMX ekler. Paketler ve Platformlar bölümlerine bakın.
SSS
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, MBTiles dosyalarından veya PMTiles arşivlerinden, rotalar TsgcMapOfflineRouter ile, adres araması ise TsgcMapOfflineGeocoder ile gelebilir. MBTiles, PMTiles, 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, KML ve EWKT'li WKT, içe aktarma için öznitelikleriyle Esri shapefile'lar, GPX iz istatistikleri ve yükseklik renkleriyle. Akışlı bir okuyucu ayrıca OpenStreetMap .osm.pbf ve XML dosyalarını işler; çevrimdışı rota grafı böyle oluşturulur. Dosya Biçimleri, Shapefile ve WKT bölümlerine bakın.
Model, VCL denetimi, shapefile ve WKT Delphi 7 ve C++ Builder 2007'den itibaren çalışır. Bazı özelliklerin minimumu daha yüksektir: PNG çıktısı, karo sunucuları, WMS ve WMTS Delphi 2009'dan, vektör karolar, PMTiles ve çevrimdışı yönlendirici XE2'den, Windows'ta FireMonkey ve GeoJSON XE6'dan, MBTiles ve çevrimdışı coğrafi kodlayıcı XE7'den, çevrimiçi hizmetler XE8'den itibaren. macOS, iOS ve Android'de FireMonkey ile Linux 64 bit'te çekirdek birimler Delphi 10.4 veya daha yenisini gerektirir.
Evet. TileSourceType değeri mtsWMS veya mtsWMTS olan bir katman, görüntülerini bir WMS 1.1.1 veya 1.3.0 hizmetinden ya da KVP veya REST kodlamasıyla bir WMTS hizmetinden ister ve capabilities okuyucuları katmanı hizmet açıklamasından yapılandırır. Harita Web Mercator'dadır, bu yüzden WMS katmanları EPSG:3857 ile istenir ve WMTS hizmetleri bir Web Mercator karo matris kümesi gerektirir. WMS ve WMTS, Community dahil her sürümdedir. WMS ve WMTS bölümlerine bakın.
Evet. TsgcWpfMap (NuGet esegece.sgcMaps.Wpf) ve TsgcAvaloniaMap (esegece.sgcMaps.Avalonia, Avalonia 12), WinForms SgcMapControl ile aynı motoru barındırır. Katmanlar ve işaretçiler XAML'de bildirilebilir, işaretçiler ItemsSource ile bir koleksiyona bağlanabilir ve görünüm iki yönlü bağlanabilir. İkisi de ücretsiz Community sürümündedir. Hızlı Başlangıç WPF ve Hızlı Başlangıç Avalonia bölümlerine bakın.
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, esegece.sgcMaps.WinForms.Community, esegece.sgcMaps.Wpf.Community ve esegece.sgcMaps.Avalonia.Community'tir. WMS, WMTS, shapefile'lar, WKT ve WPF ile Avalonia denetimleri de Community sürümündedir. Daha büyük kuruluşların Kayıtlı lisansa ihtiyacı vardır.