フィールドサービスと物流
技術者やドライバーが地図を必要とするのは、電波の弱い場所です。地域のタイルをあらかじめ準備し、オフラインルーターで車のルートをデバイス上で計算し、オフラインジオコーダーで住所を検索します。オフィスに戻れば、同じコードが計画されたルートと配送ゾーンを描画し、各ルートの PNG を納品書用に出力します。
- オフラインで動作
- オフラインルーティング
- ルートとゾーン
- 地図画像
ブラウザコントロールも JavaScript も使わずに、本物の地図をアプリケーションに組み込めます。sgcMaps は、ラスターとベクタータイルを自分で描画し、クラスタリングされた数千のマーカー、ルート、ゾーンを表示し、住所をジオコーディングし、ローカルのタイルとオフラインルーターでオフラインでも動き続けます。
13 の機能を、実際の API とその背後のヘルプトピックとともに紹介します。
地図コントロールは、タイルサーバー、ベクターソース、ディスク上のファイルから、すべてのタイルを自分で描画します。
タイルと地図データ
多くの地図コンポーネントは、Web ビューと JavaScript ライブラリをラップしているため、デスクトップアプリケーションがブラウザを同梱することになります。sgcMaps は違います。TsgcVCLMap と TsgcFMXMap は、タイルを自身のキャンバスにダウンロード、キャッシュ、描画し、マウスホイールによるズームとドラッグによるパンを処理し、通常の Delphi のイベントを発生させます。地図は他のコントロールと同じネイティブコントロールです。ドッキングでき、フォームとともにテーマが適用され、他のコードと同じようにデバッグできます。配布やセキュリティ対策が必要な追加プロセスはなく、アプリケーションが動作するどのマシンでも、地図は同じように動作します。
Layers コレクションは、1 つ以上の TsgcMapLayer 項目を保持し、それぞれが独自の TileSourceType を持ちますTsgcFMXMap は、Delphi XE6 以降の Windows、macOS、iOS、Android で動作しますSgcMapControl とヘッドレスの MapView が 1 つのエンジンを共有します
タイルと地図データ
ベースマップを選ぶために、タイルサーバーのドキュメントを読む必要はありません。レイヤーの Provider を設定して sgcMapApplyProvider を呼び出すと、レイヤーはそのプロバイダーの URL テンプレート、最大ズーム、著作権表示のテキストを受け取ります。OpenStreetMap、OpenTopoMap、Esri World Imagery、Esri World Street は、キーなしで使えます。MapTiler、Thunderforest、Stadia は、ご自身の API キーを使います。独自のタイルサーバーも、URL テンプレート 1 つで利用できます。レイヤーごとに独自のプロバイダーを持てるため、衛星画像のレイヤーと道路のレイヤーを同じ地図に置き、ユーザーが地図上で切り替えられます。
mtpOpenStreetMap、mtpOpenTopoMap、mtpEsriWorldImagery、mtpEsriWorldStreetmtpMapTilerStreets、mtpMapTilerSatellite、mtpThunderforestCycle、mtpThunderforestTransport、mtpStadiaAlidadeSmoothmtpCustom と URLTemplate で、任意の {z}/{x}/{y} サーバーを読み込みますShowLayerSwitcher は、地図上にレイヤーボタンを表示します
タイルと地図データ
ラスタータイルは拡大するとぼやけ、スタイルを変えるたびにサーバーから新しい画像を取得する必要があります。ベクタータイルでは、コントロールがジオメトリを受け取り、道路、水域、建物、ラベルを自分で描画するので、高 DPI の画面やエクスポートした画像でも文字が鮮明なままです。レイヤーを Mapbox Vector Tile サーバーに向け、VectorStyleFile を空のままにすれば組み込みのスタイルを使え、MapLibre または Mapbox GL のスタイルファイルを読み込めば、ブランドに合わせられます。ベクターレイヤーは、VCL と FireMonkey のコントロールのどちらでも動作します。
mtsVectorHTTP は、ベクタータイルサーバーを読み込みます(Delphi XE2 以降)mtsVectorMBTiles は、ローカルのベクター MBTiles ファイルを読み込みます(オフラインパック)TsgcMapVectorStyle は、LoadFromFile または LoadFromJSON でスタイルを読み込みますTsgcMapTileSource_MVT の中にあり、標準的な Delphi コードで書かれていますタイルと地図データ 登録版のみ
地下室にいる現場の技術者、海上の船舶、工場のフロアネットワークは、タイルサーバーに依存できません。sgcMaps は、Web から読み込むのとまったく同じ方法でディスクからタイルを読み込みます。レイヤーに CacheFolder を設定すると、取得したすべてのタイルが次回の実行のために保存されます。完全なオフラインパックには、TsgcMapTileDownloader が、ある範囲とズーム範囲のタイルを、あらかじめフォルダまたは MBTiles ファイルに取得します。
mtsFolder は、PNG または JPEG タイルの z/x/y フォルダを読み込みますmtsMBTiles は、ラスターの MBTiles ファイルを読み込みます(Delphi XE7 以降、FireDAC SQLite)CountTiles は、ダウンロードを始める前にそのサイズを知らせ、DelayMS と OnProgress で、負荷を抑えつつ進捗を可視化しますCommunity 版は、z/x/y のタイルフォルダを読み込み、レイヤーごとの CacheFolder を保持します。タイルダウンローダーと MBTiles ファイルは、オフラインパックに含まれます。
ヘルプのトピックを読む自分のデータを地図に載せ、どのズームレベルでも読みやすく保ち、その背後の計算を行えます。
マーカー、図形、ジオメトリ
車両群、店舗網、センサーグリッドは、すぐに重なり合うピンの塊になります。クラスタリングを有効にすると、近くのマーカーは番号付きの 1 つの円にまとまり、ユーザーがズームインすると再び分かれます。これはズームレベルごとに再計算されます。各マーカーは独自のポップアップ、ツールチップ、アイコンを持ち、クリック、ドラッグ、クラスタのクリックはイベントとして届くので、地図は単なる画像ではなく、ワークフローの一部になります。マーカーは、データからループで追加することも、GeoJSON、GPX、KML ファイルからインポートすることもでき、ClearMarkers は 1 回の呼び出しでそれらをリセットします。
MarkerOptions.Clustering と、GridSize、MinClusterSize、ZoomOnClickPopupText、TooltipText、IconBitmapOnMarkerClick、OnClusterClick、OnMarkerDragEnd イベントBeginUpdate と EndUpdate を使い、FitToMarkers がすべてを画面に収めますMarkerAtScreen と ClusterAtScreen で、任意のピクセルの当たり判定を行います
マーカー、図形、ジオメトリ
多くの地図画面では、ピン以外のものが必要です。計画された配送ルート、拠点がカバーするエリア、顧客を中心とした半径、注文の発生元などです。sgcMaps は、これらすべてをマーカーと同じ座標の、地図モデルの項目として描画します。図形は編集可能にでき、ユーザーはマウスでゾーンの頂点をドラッグでき、編集が終わるとコードに通知されます。ラベルは、独自のフォント、色、背景で座標にテキストを配置するので、ゾーン名やルート番号が地図に結び付いたままになります。
AddPolyline と、Dashed および Geodesic の線AddHole を持つ 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 に届きます検索とルーティング 登録版のみ
オンラインのルーティングは、現場向けアプリが使われるまさにその場所で失敗しやすく、リクエストごとに費用がかかることもあります。オフラインルーターは、OpenStreetMap の抽出データから一度だけ作ったルートグラフを使って、車、自転車、徒歩のルートをデバイス上で計算します。オフラインジオコーダーは、SQLite の GeoNames インデックスから、地名の検索と、クリックした位置の逆ジオコーディングを行います。どちらもネットワーク、アカウント、リクエストごとの料金は不要です。ルーターとジオコーダーは非ビジュアルコンポーネントなので、Windows サービスやコンソールツールが、画面に地図を表示せずに、ルートや住所のリクエストに応答できます。
TsgcMapOfflineRouter は、TsgcMapRouteGraphBuilder が .osm.pbf から作成したグラフを使って GetRoute に応答しますsgcMapAddRouteToPolylines は、結果を地図上に描画しますTsgcMapOfflineGeocoder の ReverseGeocode は、TsgcMapGeoIndexBuilder が作成したインデックスを使いますCommunity 版はオンラインサービスを使い、オフラインルーターとジオコーダーはオフラインパックに含まれます。
ヘルプのトピックを読む他のツールとジオデータをやり取りし、画面のない環境で地図を描画し、地図をスマートフォンに持ち込めます。
ファイル、レンダリング、モバイル
お客様は、GPS ウォッチのトラック、GIS ツールで描いたゾーン、他のシステムの KML を送ってきます。sgcMaps は、GeoJSON、GPX、KML を地図モデルに直接読み書きするので、インポートは 1 回の呼び出し、エクスポートも 1 回の呼び出しで済みます。GPX のトラックは統計情報付きで、標高で色分けでき、ストリーミングリーダーは、大きな OpenStreetMap の抽出データを、メモリに読み込まずに処理します。エクスポートも同じ関数を逆向きに使うので、ユーザーが地図上に描いたゾーンを GeoJSON や KML として保存し、他の GIS ツールで開けます。
sgcMapLoadGeoJSONFile と sgcMapSaveGeoJSONFile(Delphi XE6 以降)TsgcMapGPX の TrackStats(TotalAscent、TotalDescent)と ColorByElevationsgcMapLoadKMLFile と sgcMapSaveKMLFilesgcMapGeoJSONAsText は、地図の GeoJSON を文字列として返します
ファイル、レンダリング、モバイル
ルート付きの納品書、今日の事故を載せた日報、Web ページのサムネイルなど、ウィンドウに表示されない地図は多くあります。同じコントロールが、表示されないまま、コンソールアプリケーションや Windows サービスから PNG やビットマップを描画します。画像を送る前にすべてのタイルが届いたかを確認できるので、タイルサーバーが遅くても、お客様向けの文書に灰色の四角が残ることはありません。サーバー側のレンダリングは、対話型コントロールと同じレイヤー、マーカー、図形を使うため、画面上で設計した地図は PNG でも同じ見た目になります。
SaveToPNG と SaveToPNGFile(Delphi 2009 以降)RenderToBitmap と SaveToBMPFileLastRenderMissingTiles は、取得できなかったタイルを報告しますMapView.RenderToPng は、Linux でも動作しますファイル、レンダリング、モバイル
配車担当者は Windows のデスクトップで計画を立て、ドライバーはスマートフォンでその計画に従います。TsgcFMXMap は、同じモデル、レイヤー、マーカー、図形、サービスを、Windows、macOS、iOS、Android の FireMonkey に提供するので、VCL の地図用に書いたコードをそのまま使えます。TsgcMapLocation はデバイスの位置を読み取るため、地図をユーザーを中心に表示して追従させられます。レイヤーごとのタイルキャッシュはモバイルでも動作するので、スマートフォンは、すでに読み込んだエリアを表示し続けます。
TsgcFMXMap。TsgcVCLMap と同じコレクションを持ちますTsgcMapLocationプレビューには、プリンターと PDF に出力される内容がそのまま表示されます。
印刷、プレビュー、PDF
地図は、現在のビューの画像として 1 ページに印刷されます。範囲はコントロールと同じで、中心、ズーム、タイル、レイヤー、マーカー、図形が含まれます。スケールバーと帰属表示は印刷され、ズームボタン、レイヤー切り替え、コンパスは印刷されません。印刷によってビューが動くことはありません。
Print は印刷ダイアログを表示するか既定のプリンターへ直接印刷し、ShowPrintPreview はページ移動、ズーム、ページ設定、印刷、PDF エクスポートを備えたプレビューを開きますPrintSettings は用紙、向き、余白、拡大縮小、ヘッダーとフッターのテキストを保持し、プリンター、プレビュー、PDF のすべてがこれを使いますExportToPDF は、ページを 1 枚のタグ付き画像 (既定は 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 版を含むすべてのエディションで既定で有効です。VCL では Delphi 7 から Delphi 13 までのすべての Delphi と C++Builder のバージョンで、FireMonkey では Windows で、そして WinForms で使えます。 Delphi と C++Builder では、AccessibleName と AccessibleDescription が UI Automation に公開される名前と説明を設定し、.NET では各フレームワーク標準のアクセシブルな名前とヘルプテキストが同じ役割を果たします。アクセシビリティ適合レポートを参照してください。 マップの画像は中心とズームだけで説明され、マップのレンダラーは Windows のハイコントラストに従いません。マップの画像はプロバイダーのタイル画像であるためです。
sgcUI スイートのデモに含まれる sgcMaps:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。
48 台の車両、その経路、閉鎖区域のポリゴンを 1 枚のマップに。
Altamira Fleet →
市街地の配送ラウンドと配送先を、街路レベルで表示。
Altamira Fleet →
ステータスマーカーで示した 4 つの工場と、拠点ごとの生産量。
Altamira Plant →
RAG ステータスで色分けしたマーカーで示すプロジェクト拠点。
Altamira PMO →
技術者やドライバーが地図を必要とするのは、電波の弱い場所です。地域のタイルをあらかじめ準備し、オフラインルーターで車のルートをデバイス上で計算し、オフラインジオコーダーで住所を検索します。オフィスに戻れば、同じコードが計画されたルートと配送ゾーンを描画し、各ルートの PNG を納品書用に出力します。
コントロールルームでは、数百台の車両、機械、センサーを同時に監視します。クラスタリングにより、国レベルでは地図が読みやすく保たれ、街路レベルでは 1 つ 1 つのピンに分かれます。ヒートマップはインシデントが集中する場所を示し、ポリゴン内判定によるジオフェンスのチェックはアラートを発生させ、マーカーのクリックイベントは、自社のフォームで資産のレコードを開きます。
計画ツール、スポーツアプリ、測量ソフトウェアは、GPX のトラック、KML のレイヤー、GeoJSON のゾーンを使います。sgcMaps は、この 3 つすべてをインポートおよびエクスポートし、トラックの統計情報と標高の色分けを表示して、その結果を地形図のベースマップに重ねます。FireMonkey コントロールは、同じ機能を現場のタブレットやスマートフォンに提供します。トラックの統計情報は、ルートの総上昇量と総下降量をひと目で示します。
Delphi、C++ Builder、C# で同じ API を使えます。OpenStreetMap のタイル、3 つのマーカー、測地線、半径を表示し、マーカーに合わせて表示範囲を調整して、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 が、同じ地図を PNG ファイルに描画します。Windows でも 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.RenderingsgcMaps には、7 つの Delphi デモと 3 つの .NET デモが付属します。C++ Builder のデモプロジェクトはありません。
フォルダ、MBTiles、オンラインのタイル、マーカー、図形、GeoJSON、GPX、KML のインポート。
プロバイダーと API キー、マーカーのクラスタリング、図形の編集、ヒートマップ、画像のエクスポート。
オンラインプロバイダーによる、場所検索、ジオコーディング、経路案内、標高、タイムゾーン、デバイスの位置情報。Delphi XE8 以降。
GeoNames インデックスと OpenStreetMap のルートグラフを作成し、ネットワークなしで、場所の検索と、車、自転車、徒歩のルート検索を行います。
ウィンドウなしで、地図を PNG または BMP ファイルに描画するコンソールプログラム。
タイル、マーカー、デバイスの位置情報を使う FireMonkey の地図。Windows、macOS、iOS、Android 向け。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 パッケージは登録版のみです。プロジェクトは、Community と登録版のどちらか一方のパッケージを参照し、両方を参照することはありません。
| 機能 | Community(無料) | 登録版 |
|---|---|---|
| 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、TsgcMapTimeZone。
TsgcMapRouteCalculator、TsgcMapOfflineRouter、TsgcMapOfflineGeocoder、TsgcMapGeoIndexBuilder、TsgcMapTileDownloader。
デバイスの位置情報と、sgcMapDistance、方位、目的地点、測地線補間、ポリゴン内判定、線の単純化。
WinForms 用の SgcMapControl と、Linux でも PNG を描画するヘッドレスエンジンの MapView。
| 対象 | コンポーネント | プラットフォーム |
|---|---|---|
| Delphi 7 から 13、VCL | TsgcVCLMap とモデル | Win32、Win64 は XE2 以降 |
| 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 |
いいえ。タイル、マーカー、図形はコントロールがネイティブに描画するため、Web ビュー、JavaScript ライブラリ、配布が必要なブラウザランタイムはありません。
OpenStreetMap、OpenTopoMap、Esri のタイル、およびオフラインルーターとジオコーダーには不要です。MapTiler、Thunderforest、Stadia のタイル、および商用のジオコーディングとルーティングのプロバイダーには、ご自身のキーを使います。各プロバイダーにはそれぞれ利用規約があり、アプリケーションはそれに従う必要があります。
はい。タイルは z/x/y フォルダ、レイヤーごとのキャッシュ、MBTiles ファイルから、ルートは TsgcMapOfflineRouter から、住所検索は TsgcMapOfflineGeocoder から取得できます。MBTiles、タイルダウンローダー、オフラインルーターとジオコーダーは、登録版のオフラインパックに含まれます。
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 です。より大きな組織には、登録版のライセンスが必要です。
はじめに, 概要, VCL クイックスタート, TsgcVCLMap, タイルとレイヤー, マーカーとクラスタリング, オフラインルーティング, 静的レンダリング, デモ.
Delphi、C++ Builder、.NET。いずれも sgcUI の全製品を網羅しています。