Delphi、C++ Builder、.NET sgcUI の一部

sgcMaps:Delphi、C++ Builder、.NET 向けネイティブマップ

ブラウザコントロールも JavaScript も使わずに、本物の地図をアプリケーションに組み込めます。sgcMaps は、ラスターとベクタータイルを自分で描画し、クラスタリングされた数千のマーカー、ルート、ゾーンを表示し、住所をジオコーディングし、ローカルのタイルとオフラインルーターでオフラインでも動き続けます。

VCL、FireMonkey、Lazarus、WinFormsブラウザコントロールなし、JavaScript なし無料の .NET Community 版sgcUI Enterprise に含まれます
ベクタータイルでマドリード中心部を表示し、赤と青の位置マーカーを付けた TsgcVCLMap

地図アプリケーションに必要なすべて

13 の機能を、実際の API とその背後のヘルプトピックとともに紹介します。

タイルと地図データ

地図コントロールは、タイルサーバー、ベクターソース、ディスク上のファイルから、すべてのタイルを自分で描画します。

フォームの中に本物の地図を。中にブラウザは不要

タイルと地図データ

フォームの中に本物の地図を。中にブラウザは不要

多くの地図コンポーネントは、Web ビューと JavaScript ライブラリをラップしているため、デスクトップアプリケーションがブラウザを同梱することになります。sgcMaps は違います。TsgcVCLMap と TsgcFMXMap は、タイルを自身のキャンバスにダウンロード、キャッシュ、描画し、マウスホイールによるズームとドラッグによるパンを処理し、通常の Delphi のイベントを発生させます。地図は他のコントロールと同じネイティブコントロールです。ドッキングでき、フォームとともにテーマが適用され、他のコードと同じようにデバッグできます。配布やセキュリティ対策が必要な追加プロセスはなく、アプリケーションが動作するどのマシンでも、地図は同じように動作します。

  • Layers コレクションは、1 つ以上の TsgcMapLayer 項目を保持し、それぞれが独自の TileSourceType を持ちます
  • TsgcFMXMap は、Delphi XE6 以降の Windows、macOS、iOS、Android で動作します
  • Lazarus LCL コントロールは、ディスク上のタイルを表示します
  • .NET では、WinForms 用の SgcMapControl とヘッドレスの MapView が 1 つのエンジンを共有します
  • アラビア語とヘブライ語の右から左対応:ズームボタン、レイヤースイッチャー、コンパス、スケールバー、帰属表示は反対側に移動し、マップは地理的な向きを保ちます
ヘルプのトピックを読む
1 つのプロパティでタイルプロバイダーを選ぶ

タイルと地図データ

1 つのプロパティでタイルプロバイダーを選ぶ

ベースマップを選ぶために、タイルサーバーのドキュメントを読む必要はありません。レイヤーの Provider を設定して sgcMapApplyProvider を呼び出すと、レイヤーはそのプロバイダーの URL テンプレート、最大ズーム、著作権表示のテキストを受け取ります。OpenStreetMap、OpenTopoMap、Esri World Imagery、Esri World Street は、キーなしで使えます。MapTiler、Thunderforest、Stadia は、ご自身の API キーを使います。独自のタイルサーバーも、URL テンプレート 1 つで利用できます。レイヤーごとに独自のプロバイダーを持てるため、衛星画像のレイヤーと道路のレイヤーを同じ地図に置き、ユーザーが地図上で切り替えられます。

  • キー不要:mtpOpenStreetMap、mtpOpenTopoMap、mtpEsriWorldImagery、mtpEsriWorldStreet
  • 自分のキーを使うもの:mtpMapTilerStreets、mtpMapTilerSatellite、mtpThunderforestCycle、mtpThunderforestTransport、mtpStadiaAlidadeSmooth
  • mtpCustom と 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 で、負荷を抑えつつ進捗を可視化します
  • 一括ダウンロードは、プロバイダーの利用規約に従う必要があります。OpenStreetMap のタイルは、対話的な閲覧専用です

Community 版は、z/x/y のタイルフォルダを読み込み、レイヤーごとの CacheFolder を保持します。タイルダウンローダーと MBTiles ファイルは、オフラインパックに含まれます。

ヘルプのトピックを読む

マーカー、図形、ジオメトリ

自分のデータを地図に載せ、どのズームレベルでも読みやすく保ち、その背後の計算を行えます。

マーカー、図形、ジオメトリ

数千のマーカーでも読みやすい

車両群、店舗網、センサーグリッドは、すぐに重なり合うピンの塊になります。クラスタリングを有効にすると、近くのマーカーは番号付きの 1 つの円にまとまり、ユーザーがズームインすると再び分かれます。これはズームレベルごとに再計算されます。各マーカーは独自のポップアップ、ツールチップ、アイコンを持ち、クリック、ドラッグ、クラスタのクリックはイベントとして届くので、地図は単なる画像ではなく、ワークフローの一部になります。マーカーは、データからループで追加することも、GeoJSON、GPX、KML ファイルからインポートすることもでき、ClearMarkers は 1 回の呼び出しでそれらをリセットします。

  • MarkerOptions.Clustering と、GridSize、MinClusterSize、ZoomOnClick
  • マーカーごとの PopupText、TooltipText、IconBitmap
  • OnMarkerClick、OnClusterClick、OnMarkerDragEnd イベント
  • 一括読み込みの前後で BeginUpdate と EndUpdate を使い、FitToMarkers がすべてを画面に収めます
  • MarkerAtScreen と ClusterAtScreen で、任意のピクセルの当たり判定を行います
ヘルプのトピックを読む
1 つの地図にルート、ゾーン、ヒートマップ

マーカー、図形、ジオメトリ

1 つの地図にルート、ゾーン、ヒートマップ

多くの地図画面では、ピン以外のものが必要です。計画された配送ルート、拠点がカバーするエリア、顧客を中心とした半径、注文の発生元などです。sgcMaps は、これらすべてをマーカーと同じ座標の、地図モデルの項目として描画します。図形は編集可能にでき、ユーザーはマウスでゾーンの頂点をドラッグでき、編集が終わるとコードに通知されます。ラベルは、独自のフォント、色、背景で座標にテキストを配置するので、ゾーン名やルート番号が地図に結び付いたままになります。

  • AddPolyline と、Dashed および Geodesic の線
  • AddHole を持つ AddPolygon、さらに AddRectangle、AddCircle(RadiusMeters)、AddLabel
  • Editable な図形は、OnShapeEdited で変更を通知します
  • TsgcMapHeatmap は、AddPoint による重み付きの点と、MaxIntensity を受け取ります
ヘルプのトピックを読む

マーカー、図形、ジオメトリ

地理計算はすでに用意されています

この車両はゾーンの内側にありますか。最も近い拠点までの距離は。ルート上でその顧客に最も近い点はどこか。こうした疑問はどの地図アプリケーションにも出てきますが、極付近や長距離では間違いやすいものです。ジオメトリユニットは、WGS84 球面上でこれらに答え、地図がまったくないサービスからも呼び出せる通常の関数として提供されます。関数は通常の TsgcMapCoord レコードを受け取り、独自のオーバーレイを描画するときは、sgcMapLatLonToPixel と sgcMapPixelToLatLon が、画面座標とワールド座標を変換します。

  • メートル単位の sgcMapDistance、sgcMapInitialBearing、sgcMapDestinationPoint
  • ジオフェンス向けの sgcMapPointInPolygon と sgcMapPointInPolygonWithHoles
  • sgcMapNearestPointOnPolyline は、位置をルートにスナップします
  • 滑らかで軽い線のための sgcMapGeodesicInterpolate と sgcMapSimplify
ヘルプのトピックを読む

検索とルーティング

オンラインのプロバイダーで住所を検索してルートを計画することも、API キーなしで完全にオフラインで行うこともできます。

検索とルーティング

ジオコーディング、経路案内、場所検索を 1 つの API で

ジオコーディングやルーティングのプロバイダーは、それぞれ独自の REST 形式、キー、癖を持っています。サービスコンポーネントはそれらを隠します。プロバイダーを選び、必要ならキーを設定して、同じメソッドを同期または非同期で呼び出すだけです。プロバイダーの切り替えはプロパティの変更で済み、書き直しは不要で、結果は地図にそのまま載せられる Delphi のオブジェクトとして返ります。すべてのコンポーネントは TsgcMapService 基底クラスを共有するため、ApiKey、UserAgent、LastError は、どのプロバイダーでも同じように動作します。

  • TsgcMapGeocoder:Nominatim、Google、HERE、Azure Maps、Mapbox、OpenRouteService、Geoapify
  • TsgcMapDirections:OSRM、OpenRouteService、Google Routes、HERE、Azure Maps、Mapbox、Geoapify
  • 住所のオートコンプリート向けの TsgcMapPlaces、TsgcMapElevation、TsgcMapTimeZone
  • GeocodeAsync、GetRouteAsync、SuggestAsync は UI の応答性を保ち、エラーは OnError に届きます
ヘルプのトピックを読む

検索とルーティング 登録版のみ

インターネットもキーも不要のルートと住所検索

オンラインのルーティングは、現場向けアプリが使われるまさにその場所で失敗しやすく、リクエストごとに費用がかかることもあります。オフラインルーターは、OpenStreetMap の抽出データから一度だけ作ったルートグラフを使って、車、自転車、徒歩のルートをデバイス上で計算します。オフラインジオコーダーは、SQLite の GeoNames インデックスから、地名の検索と、クリックした位置の逆ジオコーディングを行います。どちらもネットワーク、アカウント、リクエストごとの料金は不要です。ルーターとジオコーダーは非ビジュアルコンポーネントなので、Windows サービスやコンソールツールが、画面に地図を表示せずに、ルートや住所のリクエストに応答できます。

  • TsgcMapOfflineRouter は、TsgcMapRouteGraphBuilder が .osm.pbf から作成したグラフを使って GetRoute に応答します
  • sgcMapAddRouteToPolylines は、結果を地図上に描画します
  • TsgcMapOfflineGeocoder の ReverseGeocode は、TsgcMapGeoIndexBuilder が作成したインデックスを使います
  • グラフとインデックスを作るコマンドラインビルダーは、Tools フォルダにあります

Community 版はオンラインサービスを使い、オフラインルーターとジオコーダーはオフラインパックに含まれます。

ヘルプのトピックを読む

ファイル、レンダリング、モバイル

他のツールとジオデータをやり取りし、画面のない環境で地図を描画し、地図をスマートフォンに持ち込めます。

ファイル、レンダリング、モバイル

ユーザーがすでに持っているファイルを開く

お客様は、GPS ウォッチのトラック、GIS ツールで描いたゾーン、他のシステムの KML を送ってきます。sgcMaps は、GeoJSON、GPX、KML を地図モデルに直接読み書きするので、インポートは 1 回の呼び出し、エクスポートも 1 回の呼び出しで済みます。GPX のトラックは統計情報付きで、標高で色分けでき、ストリーミングリーダーは、大きな OpenStreetMap の抽出データを、メモリに読み込まずに処理します。エクスポートも同じ関数を逆向きに使うので、ユーザーが地図上に描いたゾーンを GeoJSON や KML として保存し、他の GIS ツールで開けます。

  • sgcMapLoadGeoJSONFile と sgcMapSaveGeoJSONFile(Delphi XE6 以降)
  • TsgcMapGPX の TrackStats(TotalAscent、TotalDescent)と ColorByElevation
  • sgcMapLoadKMLFile と sgcMapSaveKMLFile
  • OpenStreetMap リーダーは、.osm.pbf と XML ファイルをイベントを通じてストリーミング処理します
  • sgcMapGeoJSONAsText は、地図の GeoJSON を文字列として返します
ヘルプのトピックを読む
サーバーで地図画像を描画

ファイル、レンダリング、モバイル

サーバーで地図画像を描画

ルート付きの納品書、今日の事故を載せた日報、Web ページのサムネイルなど、ウィンドウに表示されない地図は多くあります。同じコントロールが、表示されないまま、コンソールアプリケーションや Windows サービスから PNG やビットマップを描画します。画像を送る前にすべてのタイルが届いたかを確認できるので、タイルサーバーが遅くても、お客様向けの文書に灰色の四角が残ることはありません。サーバー側のレンダリングは、対話型コントロールと同じレイヤー、マーカー、図形を使うため、画面上で設計した地図は PNG でも同じ見た目になります。

  • SaveToPNG と SaveToPNGFile(Delphi 2009 以降)
  • 独自のパイプライン向けの RenderToBitmap と SaveToBMPFile
  • LastRenderMissingTiles は、取得できなかったタイルを報告します
  • .NET の MapView.RenderToPng は、Linux でも動作します
ヘルプのトピックを読む

ファイル、レンダリング、モバイル

デスクトップでもモバイルでも同じ地図

配車担当者は Windows のデスクトップで計画を立て、ドライバーはスマートフォンでその計画に従います。TsgcFMXMap は、同じモデル、レイヤー、マーカー、図形、サービスを、Windows、macOS、iOS、Android の FireMonkey に提供するので、VCL の地図用に書いたコードをそのまま使えます。TsgcMapLocation はデバイスの位置を読み取るため、地図をユーザーを中心に表示して追従させられます。レイヤーごとのタイルキャッシュはモバイルでも動作するので、スマートフォンは、すでに読み込んだエリアを表示し続けます。

  • Delphi XE6 以降の TsgcFMXMap。TsgcVCLMap と同じコレクションを持ちます
  • Windows、Android、iOS、macOS の TsgcMapLocation
  • FMX デモは、タイル、マーカー、位置情報を 1 つのフォームで紹介します
  • 機能ごとの最低 Delphi バージョンは、インストールのトピックに記載しています
ヘルプのトピックを読む

アクセシビリティ

スクリーンリーダーとキーボード向けの UI Automation を、設定なしで使えます。

アクセシビリティ

キーボードで操作でき、UI Automation に公開されるマップ

sgcMaps は、マップを代替テキスト、マーカーの一覧、レイヤーの一覧とともに Microsoft UI Automation に公開し、各レイヤーは表示されているかどうかを報告します。マーカーにはキーボードで移動できます。

  • 矢印キーでマップをパンし、プラスキーとマイナスキーでズームし、Home で最初のビューに戻ります
  • Page Up と Page Down で前後のマーカーへ移動し、Enter でフォーカスされたマーカーを実行し、Esc でマーカーのフォーカスを解除します
  • マップは、フォーカスを持っている間、表示されるフォーカスリングを示します
  • sgcMaps は .NET では WinForms コントロールなので、マップは WinForms でアクセシブルです

アクセシビリティは、無料の Community 版を含むすべてのエディションで既定で有効です。VCL では Delphi 7 から Delphi 13 までのすべての Delphi と C++Builder のバージョンで、FireMonkey では Windows で、そして WinForms で使えます。 Delphi と C++Builder では、AccessibleName と AccessibleDescription が UI Automation に公開される名前と説明を設定し、.NET では各フレームワーク標準のアクセシブルな名前とヘルプテキストが同じ役割を果たします。アクセシビリティ適合レポートを参照してください。 マップの画像は中心とズームだけで説明され、マップのレンダラーは Windows のハイコントラストに従いません。マップの画像はプロバイダーのタイル画像であるためです。

ヘルプのトピックを読む

sgcMaps の動作を見る

sgcUI スイートのデモに含まれる sgcMaps:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。

sgcMaps の主な利用シーン

フィールドサービスと物流

技術者やドライバーが地図を必要とするのは、電波の弱い場所です。地域のタイルをあらかじめ準備し、オフラインルーターで車のルートをデバイス上で計算し、オフラインジオコーダーで住所を検索します。オフィスに戻れば、同じコードが計画されたルートと配送ゾーンを描画し、各ルートの PNG を納品書用に出力します。

  • オフラインで動作
  • オフラインルーティング
  • ルートとゾーン
  • 地図画像
OfflineServices デモを実行する

資産と車両の追跡

コントロールルームでは、数百台の車両、機械、センサーを同時に監視します。クラスタリングにより、国レベルでは地図が読みやすく保たれ、街路レベルでは 1 つ 1 つのピンに分かれます。ヒートマップはインシデントが集中する場所を示し、ポリゴン内判定によるジオフェンスのチェックはアラートを発生させ、マーカーのクリックイベントは、自社のフォームで資産のレコードを開きます。

  • クラスタリング
  • ヒートマップ
  • ジオメトリ
  • イベント
MapFeatures デモを実行する

軽量 GIS とアウトドアアプリ

計画ツール、スポーツアプリ、測量ソフトウェアは、GPX のトラック、KML のレイヤー、GeoJSON のゾーンを使います。sgcMaps は、この 3 つすべてをインポートおよびエクスポートし、トラックの統計情報と標高の色分けを表示して、その結果を地形図のベースマップに重ねます。FireMonkey コントロールは、同じ機能を現場のタブレットやスマートフォンに提供します。トラックの統計情報は、ルートの総上昇量と総下降量をひと目で示します。

  • GeoJSON、GPX、KML
  • 地形図タイル
  • FireMonkey
OfflineMap デモを実行する

数行で作る地図

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.Rendering

ヘルプのトピックを読む →

sgcMaps のデモを実行する

sgcMaps には、7 つの Delphi デモと 3 つの .NET デモが付属します。C++ Builder のデモプロジェクトはありません。

登録版のみ OfflineMap

フォルダ、MBTiles、オンラインのタイル、マーカー、図形、GeoJSON、GPX、KML のインポート。

MapFeatures

プロバイダーと API キー、マーカーのクラスタリング、図形の編集、ヒートマップ、画像のエクスポート。

Services

オンラインプロバイダーによる、場所検索、ジオコーディング、経路案内、標高、タイムゾーン、デバイスの位置情報。Delphi XE8 以降。

登録版のみ OfflineServices

GeoNames インデックスと OpenStreetMap のルートグラフを作成し、ネットワークなしで、場所の検索と、車、自転車、徒歩のルート検索を行います。

StaticRender

StaticRender

ウィンドウなしで、地図を PNG または BMP ファイルに描画するコンソールプログラム。

FMX

タイル、マーカー、デバイスの位置情報を使う FireMonkey の地図。Windows、macOS、iOS、Android 向け。Delphi XE6 以降。

VectorTiles

VectorTiles

組み込みのスタイルまたは独自のスタイルファイルで描画する、ベクタータイルサーバー。どのズームでもラベルが鮮明です。

WinFormsDemo

WinForms ウィンドウ内の .NET SgcMapControl。プロバイダー、マーカー、図形を使います。

登録版のみ OfflineDemo

.NET のオフラインパッケージ。ローカルのデータファイルによる、オフラインのタイル、ルーティング、ジオコーディング。

ConsoleRenderDemo

ConsoleRenderDemo

ヘッドレスの MapView で、地図を PNG に描画する .NET コンソール。Windows でも Linux でも動作します。

コンパイル済みデモ

sgcUI 全製品のすぐに実行できる実行ファイルです。インストールは不要です。

sgcUI_bin.zip をダウンロード →

sgcMaps が含まれるエディション

sgcMaps は sgcUI Enterprise に含まれ、単体でも販売しています。All-Access バンドルにも含まれます。

sgcMaps 単体パッケージ

€149 / 開発者、ソースコード一式、1 年間のアップデート付き。

sgcMaps を購入 → 価格を見る →

sgcUI Enterprise

sgcUI 全 14 製品、€699 から。

Enterprise を見る →

無料の 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 ファイル(ラスターとベクター)−✓
オフラインルーターとオフラインジオコーダー−✓

対応フレームワークとプラットフォーム

sgcMaps のコンポーネント

TsgcVCLMap と TsgcFMXMap

VCL と FireMonkey 向けの地図コントロールと、ディスク上のタイルを読み込む Lazarus LCL コントロール。

モデルのコレクション

Layers、Markers、Polylines、Polygons、Rectangles、Circles、Labels、Heatmaps。すべてのフレームワークで共有されます。

オンラインサービス

TsgcMapGeocoder、TsgcMapDirections、TsgcMapPlaces、TsgcMapElevation、TsgcMapTimeZone。

オフラインツール

TsgcMapRouteCalculator、TsgcMapOfflineRouter、TsgcMapOfflineGeocoder、TsgcMapGeoIndexBuilder、TsgcMapTileDownloader。

TsgcMapLocation とジオメトリのヘルパー

デバイスの位置情報と、sgcMapDistance、方位、目的地点、測地線補間、ポリゴン内判定、線の単純化。

.NET のマップ

WinForms 用の SgcMapControl と、Linux でも PNG を描画するヘッドレスエンジンの MapView。

対象コンポーネントプラットフォーム
Delphi 7 から 13、VCLTsgcVCLMap とモデルWin32、Win64 は XE2 以降
Delphi XE6 から 13、FireMonkeyTsgcFMXMapWindows、macOS、iOS、Android。デバイスの位置情報は Windows、Android、iOS、macOS
C++ Builder 2007 から 13TsgcVCLMap とモデル生成された .hpp ヘッダーと静的ライブラリ
LazarusLCL の地図コントロールディスク上のタイルのみ。タイルをダウンロードできません
.NET 8、9 と 10SgcMapControl、MapViewWinForms(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 です。より大きな組織には、登録版のライセンスが必要です。

sgcMaps のヘルプ

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

今すぐ sgcMaps をお試しください

sgcUI 体験版には、オフラインパックを含む sgcMaps と、他のすべての sgcUI 製品が含まれます。.NET Community 版は NuGet で無料です。