「Dotspatial」を利用して、複数のマップを並べて表示するプラグインを作成

「Dotspatial」では、標準機能で、複数のマップを並べて表示する機能がなかったので、
プラグインを作成してみました。

マップを並べて表示する機能は、Devexpress社のTabbedViewクラスを利用します。ArcGIS Proでも同様の機能があり、操作方法がほぼ同じになっているので、内部でDevexpress社の部品を使っているかもしれません。

1.複数のマップを並べて表示するプラグイン(SubMapView)の作成

SubMapViewプラグインを作成しまます。プラグインでは、並べて表示ボタンを作成し、このボタンをクリックすると、メインのマップの定義からレイヤなど全ての情報を読み込み、サブマップを作成し、サブマップを含むパネルをDevexpress社のTabbedViewに追加することで、マップを並べて表示することができます。
TabbedViewへの追加処理は、DockingManagerクラスを少し編集します。

作成したサブマップ及び、メインマップに、地図移動時のイベントハンドラーを追加し、双方の地図が同期するようにします。サブマップのレイヤの編集はまだできないので、できたら後日、公開しようかと思います。

以下、SubMapViewプラグインのソースです。

2.サブマップを含むパネルをTabbedViewに追加

TabbedViewへの追加処理は、DockingManagerクラスのAddメソッドを少し編集します。サブマップのパネルが追加された際、DocumentGroupクラスも追加することで、パネルが並んで表示されます。
この処理は、Visual Studioでソースを並べて表示させる場合と同じ処理になります。

以下、DockingManagerクラスの変更箇所のソースです。

これだけ、短いコードで実現できたのは、Devexpress社と、DotSpatialの機能が優れているからだと思います。本当に優れたソフトウェアです。

地理院タイルのレイヤでも試してみましたが、うまく動いています。よくあるのが、
航空写真を見ながら、図面を確認するといった業務に使えそうです。

Print Friendly, PDF & Email