Maps for WinForms
レイヤ

このトピックでは、レイヤーの概念と、マップコントロールで使用されるレイヤーの種類について説明します。

基本的に、レイヤーは地図上にデータを描画するのに役立ちます。 これは、地理データを表示するために使用できます。

Map コントロールでサポートされているレイヤーにはいくつかの種類があります。

タイルレイヤ

タイルレイヤは、さまざまなタイルソースを使用してマップにマップタイルを表示するために使用されます。これは、データを追加する前に最初にマップに追加されるレイヤです。C1Map.TileLayer プロパティを使用して、マップにタイルレイヤを追加できます。マップにタイルレイヤを追加したら、TileLayer クラスの TileSource プロパティを使用して、タイルソースを設定する必要があります。

タイルソースの追加

C1Map は、VirtualEarthAerialSource、VirtualEarthRoadSource、VirtualEarthHybridSource の 3 つの組み込みタイルソースを使用します。これらのいずれかを使用して、タイルレイヤのタイルソースを定義できます。また、カスタムタイルソースを追加することもできます。これについては、マップのソースを参考してください。

次のコードは、C1.Win.Map.TileLayer および TileSource プロパティの使用方法を示します。

C#
コードのコピー
c1Map1.TileLayer.TileSource = new VirtualEarthAerialSource();

ベクターレイヤ

ベクターレイヤを使用して、マップ内に地理座標に基づいてさまざまなオブジェクトを配置できます。これにより、国境、県境などの行政界を描画したり、航路図などの地理的な詳細を追加したりできます。

次は、ベクターレイヤで使用できる主要なベクター要素です。

Vector Placemark

地理的な場所に関連付けられたオブジェクト。プレースマークは、ピクセル座標で座標が表現される、スケールに依存しないジオメトリと、オプションのラベル(任意の UIElement)を持ちます。用途の例として、マップ内のラベル、アイコン、マークがあります。

ラベルを追加する方法:

次のコードでは、VectorLayerVectorPlacemarkを使用して地理的なポイントにラベルを追加できます。

C#
コードのコピー
// ソースを追加します。
c1Map1.TileLayer.TileSource = new VirtualEarthAerialSource();
// ベクターレイヤを追加します。
var vl = new C1.Win.Map.VectorLayer();
c1Map1.Layers.Add(vl);
// プレースマークを追加します。
var pm = new C1.Win.Map.VectorPlacemark();
pm.Geometry = new GeoPoint(139, 35);
vl.Items.Add(pm);
// ラベルを追加します。
vl.LabelVisibility = LabelVisibility.Visible;
pm.Marker.Caption = "Japan";
pm.LabelStyle.ForeColor = Color.Yellow;

上記のコードは、マップにラベルを追加し、キャプションを付け、ラベルキャプションのフォントの色を設定します。

マップコントロールを使用して、マップに追加されたラベルをカスタマイズすることができます。 また、次のプロパティで、ラベルとマーカーをさらにカスタマイズできます。

プロパティ 説明
Shape マーカーの形状を設定します。
CustomShape マーカーに対してカスタム形状を指定します。
LabelPosition マーカーに対するラベルの位置を指定します。
Size マーカーの形状のサイズを指定します。

Labelのスタイルを設定するには、VectorPlacemarkクラスのLabelStyleプロパティを使用します。 このプロパティを使用すると、ラベルの背景色、幅、およびラベルの境界線の丸い半径を変更できます。

Vector Polyline

Polygon クラスに似ていますが、閉じた形状にする必要はありません。地理座標を使用して折れ線が形成されます。用途の例として、道路や経路があります。

折れ線を追加する方法:

C#
コードのコピー
// 折れ線を追加します。
var pline = new C1.Win.Map.VectorPolyline();
vl.Items.Add(pline);
//折れ線のストロークのスタイルを指定します。
pline.Style.Stroke.Width = 2;
pline.Style.Stroke.Style = DashStyle.Dot;
 pline.Style.Stroke.Color = Color.Aqua;
//折れ線のジオメトリを提供します。
pline.Geometry = new GeoMultiLineString(
new GeoLineString[]
                {
new GeoLineString(new GeoPoint[]
{
            new GeoPoint(20, -20),
            new GeoPoint(-20, 20),
        }),
        new GeoLineString(new GeoPoint[]
        {
            new GeoPoint(-20, -20),
            new GeoPoint(20, 20),
        })
});

 

Vector Polygon

Polyline クラスに似ていますが、こちらは多角形を描画します。多角形は、線分をつないでできた閉じた形状です。この多角形は地理座標を使用して形成されます。用途の例として、国境や地域区分があります。

多角形を追加する方法:

C#
コードのコピー
// ベクターレイヤに多角形ベクター(C1.Win.Map.VectorPolygon)を追加します。
var polygon = new C1.Win.Map.VectorPolygon();
vl.Items.Add(polygon);
// 多角形をカスタマイズします。
polygon.Style.BackColor = Color.LimeGreen;
// Provide the geopoint location for the polygon
polygon.Geometry = new GeoPolygon(new GeoLinearRing[]
            {
    new GeoLinearRing(new GeoPoint[]
    {
        new GeoPoint(-10,-10),
        new GeoPoint(-10,10),
        new GeoPoint(10,10),
        new GeoPoint(10,-10),
    }),
            });

仮想レイヤ

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