Maps for WinForms
仮想レイヤ
レイヤ > 仮想レイヤ

仮想レイヤは、仮想化と非同期データロードをサポートしてマップ内に要素を表示します。一度に表示する要素が多くない場合は、これを使用して、無制限の数の要素を表示できます。

仮想化のためのレイヤ区分は、マップスライスの VirtualLayer.Slices コレクションを使用して定義されます。各マップスライスには、その区分の最小ズームレベルが定義され、あるスライスの最大ズームレベルが次のスライスの最小ズームレベルになります。したがって、最後のスライスの最大ズームレベルは、マップの最大ズームレベルになります。さらに、各スライスは、緯度/経度のグリッドに分割されます。

マップに仮想レイヤを追加するには、IMapVirtualSource インタフェースを実装する独自クラスを作成する必要があります。ここでは、マップに仮想レイヤを追加するために、プレースマークとマーカーのジオメトリで構成される VirtualSource というクラスを作成しました。クラスの作成時には、C1.Win dll を追加する必要があります。次のコードを使用して、マップに仮想レイヤを追加します。

C1Map1.TileLayer.TileSource = New VirtualEarthAerialSource()

Dim vlayer = New C1.Win.Map.VirtualLayer()
C1Map1.Layers.Add(vlayer)
vlayer.LabelVisibility = LabelVisibility.Visible

' スライスコレクションは、仮想レイヤが必要なときにアイテムを取得する領域を定義します。
vlayer.Slices.Add(New MapSlice(0, 1, 1))
vlayer.Slices.Add(New MapSlice(1, 4, 4))

' C1.Win.Map.IMapVirtualSourceインタフェースを実装する仮想ソースを提供する必要があります。
vlayer.ItemsSource = New VirtualSource()

' デフォルトのスタイル。
vlayer.Style.Stroke.Width = 1
vlayer.Style.Stroke.Color = Color.Blue
vlayer.Style.BackColor = Color.Aqua
c1Map1.TileLayer.TileSource = new VirtualEarthAerialSource();

var vlayer = new C1.Win.Map.VirtualLayer();
c1Map1.Layers.Add(vlayer);
vlayer.LabelVisibility = LabelVisibility.Visible;

//スライスコレクションは、仮想レイヤが必要なときにアイテムを取得する領域を定義します。
vlayer.Slices.Add(new MapSlice(0, 1, 1));
vlayer.Slices.Add(new MapSlice(1, 4, 4));

//  C1.Win.Map.IMapVirtualSourceインタフェースを実装する仮想ソースを提供する必要があります。
vlayer.ItemsSource = new VirtualSource();

// デフォルトのスタイル
vlayer.Style.Stroke.Width = 1;
vlayer.Style.Stroke.Color = Color.Blue;
vlayer.Style.BackColor = Color.Aqua;

出力は、マップの中心にマーカーがある次の画像のようになります。

ズームインすると、マーカーが複数のプレースマークに分裂し、仮想化を示していることがわかります。