バージョン

表面要素の追加

SurfaceElement オブジェクトは、xamMap の多角形および図形を表します。カスタムの図形を表示するためにユーザー固有の SurfaceElement オブジェクトを追加できます。カスタムの図形を作成するために測地座標またはデカルト座標のいずれかで指定された少なくとも 3 つの点を定義する必要があります。

以下のコードは、マップ レイヤーの Imported イベントを使用して、アメリカ合衆国の東海岸に停泊される船舶を作成する方法を示します。

Visual Basic の場合:

Private Sub worldLayer_Imported(ByVal sender As System.Object, ByVal e As Infragistics.Controls.Maps.MapLayerImportEventArgs)
   If e.Action = MapLayerImportAction.[End] Then
      ' 図形のための点を保持するための線分群コレクション
      Dim lines As New MapPolylineCollection()
      Dim points As New List(Of Point)()
      ' 図形を作るための点
      points.Add(New Point(-74.535 - 2, 40.246 - 1))
      points.Add(New Point(-74.535 + 2, 40.246 - 1))
      points.Add(New Point(-74.535 + 4, 40.246 + 1))
      points.Add(New Point(-74.535 - 4, 40.246 + 1))
      ' 測地座標をデカルト座標に変換します
      lines.Add(map1.MapProjection.ProjectToMap(points))
      ' 表面要素を作成して線分群を使用して図形を配置します
      Dim surfaceElement As New SurfaceElement()
      surfaceElement.Polylines = lines
      surfaceElement.Fill = New SolidColorBrush(Colors.Brown)
      map1.Layers(0).Elements.Add(surfaceElement)
      Dim worldRect As Rect = surfaceElement.WorldRect
      worldRect = lines.GetWorldRect()
      surfaceElement.WorldRect = worldRect
   End If
End Sub

C# の場合:

private void worldLayer_Imported(object sender, Infragistics.Controls.Maps.MapLayerImportEventArgs e)
{
   if (e.Action == MapLayerImportAction.End)
   {
      // 図形のための点を保持するための線分群コレクション
      MapPolylineCollection lines = new MapPolylineCollection();
      List<Point> points = new List<Point>();
      // 図形を作るための点
      points.Add(new Point(-74.535 - 2, 40.246 - 1));
      points.Add(new Point(-74.535 + 2, 40.246 - 1));
      points.Add(new Point(-74.535 + 4, 40.246 + 1));
      points.Add(new Point(-74.535 - 4, 40.246 + 1));
      // 測地座標をデカルト座標に変換します
      lines.Add(map1.MapProjection.ProjectToMap(points));
      // 表面要素を作成して線分群を使用して図形を配置します
      SurfaceElement surfaceElement = new SurfaceElement() { Polylines = lines, Fill = new SolidColorBrush(Colors.Brown) };
      map1.Layers[0].Elements.Add(surfaceElement);
      Rect worldRect = surfaceElement.WorldRect;
      worldRect = lines.GetWorldRect();
      surfaceElement.WorldRect = worldRect;
   }
}
xamMap Add Surface Element 01.png