Blazor 地理的データ モデルのバインディング
Ignite UI for Blazor マップ コンポーネントは、シェイプ ファイルからの地理空間データやデータ モデルからの地理的位置を地理的画像マップに表示するように設計されています。地理的シリーズの DataSource
プロパティは、データ モデルへのバインディングのために使用されます。このプロパティは、カスタム オブジェクトの配列にバインドできます。
Blazor 地理的データ モデルのバインディングの例
以下の表で、地理的シリーズのタイプごとに必要となるデータ構造を簡単に説明します。
Geographic シリーズ | プロパティ | 概要 |
---|---|---|
IgbGeographicSymbolSeries |
LongitudeMemberPath 、LatitudeMemberPath |
2 つの数値の経度と緯度座標の名前を指定します。 |
IgbGeographicHighDensityScatterSeries |
LongitudeMemberPath 、LatitudeMemberPath |
2 つの数値の経度と緯度座標の名前を指定します。 |
IgbGeographicProportionalSymbolSeries |
LongitudeMemberPath 、LatitudeMemberPath 、RadiusMemberPath |
2 つの経度座標と緯度座標の名前と、シンボルのサイズ/半径の数字列を 1 列指定します。 |
IgbGeographicScatterAreaSeries |
LongitudeMemberPath 、LatitudeMemberPath 、ColorMemberPath |
数値の三角測量のために、2 つの経度と緯度座標および数値列を 1 列指定します。 |
IgbGeographicContourLineSeries |
LongitudeMemberPath 、LatitudeMemberPath 、ValueMemberPath |
数値の三角測量のために、2 つの経度と緯度座標および数値列を 1 列指定します。 |
IgbGeographicShapeSeries |
ShapeMemberPath |
図形の地理的ポイントを含む DataSource 項目のデータ列の名前を指定します。このプロパティは、x プロパティと y プロパティを持つオブジェクトの配列の配列にマップする必要があります。 |
IgbGeographicPolylineSeries |
ShapeMemberPath |
線の地理的座標を含む DataSource 項目のデータ列の名前を指定します。このプロパティは、x プロパティと y プロパティを持つオブジェクトの配列の配列にマップする必要があります。 |
コード スニペット
以下のコードは、IgbGeographicSymbolSeries
を、経度と緯度の座標を使用して格納された世界の一部の都市の地理的位置を含むカスタム データ モデルにバインドする方法を示します。また、WorldUtility を使用してこれらの場所間の最短の地理的経路をプロットするために IgbGeographicPolylineSeries
を使用します。
@using IgniteUI.Blazor.Controls
<IgbGeographicMap Height="100%" Width="100%" Zoomable="true">
@for (int i = 0; i < this.DataSource.Count; i++)
{
FlightInfo info = this.DataSource[i];
List<WorldCity> symbolData = new List<WorldCity>() { info.Origin, info.Dest };
GeoLocation geoOrigin = new GeoLocation() { Lat = info.Origin.Lat, Lon = info.Origin.Lon };
GeoLocation geoDest = new GeoLocation() { Lat = info.Dest.Lat, Lon = info.Dest.Lon };
List<List<Point>> geoPath = WorldUtils.CalcPaths(geoOrigin, geoDest);
double geoDistance = WorldUtils.CalcDistance(geoOrigin, geoDest);
FlightInfo route = new FlightInfo()
{
Points = geoPath,
Origin = info.Origin,
Dest = info.Dest,
Distance = geoDistance,
Time = geoDistance / 850
};
List<FlightInfo> geoRoute = new List<FlightInfo>() { route };
<IgbGeographicSymbolSeries DataSource="@symbolData" MarkerType="MarkerType.Circle"
LatitudeMemberPath="Lat" LongitudeMemberPath="Lon"
MarkerBrush="White" MarkerOutline="@info.Color"
Thickness="1">
</IgbGeographicSymbolSeries>
<IgbGeographicPolylineSeries DataSource="@geoRoute" ShapeMemberPath="Points"
ShapeStrokeThickness="9" ShapeOpacity="0.5"
ShapeStroke="@info.Color">
</IgbGeographicPolylineSeries>
}
</IgbGeographicMap>
@code {
private List<FlightInfo> DataSource;
protected override void OnInitialized()
{
WorldCity cityDAL = new WorldCity() { Lat = 32.763, Lon = -96.663, Country = "US", Name = "Dallas" };
WorldCity citySYD = new WorldCity() { Lat = -33.889, Lon = 151.028, Country = "Australia", Name = "Sydney" };
WorldCity cityNZL = new WorldCity() { Lat = -36.848, Lon = 174.763, Country = "New Zealand", Name = "Auckland" };
WorldCity cityQTR = new WorldCity() { Lat = 25.285, Lon = 51.531, Country = "Qatar", Name = "Doha" };
WorldCity cityPAN = new WorldCity() { Lat = 8.949, Lon = -79.400, Country = "Panama", Name = "Panama" };
WorldCity cityCHL = new WorldCity() { Lat = -33.475, Lon = -70.647, Country = "Chile", Name = "Santiago" };
WorldCity cityJAP = new WorldCity() { Lat = 35.683, Lon = 139.809, Country = "Japan", Name = "Tokyo" };
WorldCity cityALT = new WorldCity() { Lat = 33.795, Lon = -84.349, Country = "US", Name = "Atlanta" };
WorldCity cityJOH = new WorldCity() { Lat = -26.178, Lon = 28.004, Country = "South Africa", Name = "Johannesburg" };
WorldCity cityNYC = new WorldCity() { Lat = 40.750, Lon = -74.0999, Country = "US", Name = "New York" };
WorldCity citySNG = new WorldCity() { Lat = 1.229, Lon = 104.177, Country = "Singapore", Name = "Singapore" };
WorldCity cityMOS = new WorldCity() { Lat = 55.750, Lon = 37.700, Country = "Russia", Name = "Moscow" };
WorldCity cityROM = new WorldCity() { Lat = 41.880, Lon = 12.520, Country = "Italy", Name = "Roma" };
WorldCity cityLAX = new WorldCity() { Lat = 34.000, Lon = -118.25, Country = "US", Name = "Los Angeles" };
this.DataSource = new List<FlightInfo>() {
new FlightInfo() { Origin = cityDAL, Dest = citySNG, Color = "Green" },
new FlightInfo() { Origin = cityMOS, Dest = cityNZL, Color = "Red" },
new FlightInfo() { Origin = cityCHL, Dest = cityJAP, Color = "Blue" },
new FlightInfo() { Origin = cityPAN, Dest = cityROM, Color = "Orange" },
new FlightInfo() { Origin = cityALT, Dest = cityJOH, Color = "Black" },
new FlightInfo() { Origin = cityNYC, Dest = cityQTR, Color = "Purple" },
new FlightInfo() { Origin = cityLAX, Dest = citySYD, Color = "Gray" },
};
}
public class WorldCity
{
public string Name { get; set; }
public double Lat { get; set; }
public double Lon { get; set; }
public double Pop { get; set; }
public string Country { get; set; }
public bool Cap { get; set; }
}
public class FlightInfo
{
public string ID { get; set; }
public WorldCity Origin { get; set; }
public WorldCity Dest { get; set; }
public double Time { get; set; }
public double Passengers { get; set; }
public double Distance { get; set; }
public List<List<Point>> Points { get; set; }
public string Color { get; set; }
}
}