Blazor 地理的データ モデルのバインディング

    Ignite UI for Blazor マップ コンポーネントは、シェイプ ファイルからの地理空間データやデータ モデルからの地理的位置を地理的画像マップに表示するように設計されています。地理的シリーズの DataSource プロパティは、データ モデルへのバインディングのために使用されます。このプロパティは、カスタム オブジェクトの配列にバインドできます。

    Blazor 地理的データ モデルのバインディングの例

    以下の表で、地理的シリーズのタイプごとに必要となるデータ構造を簡単に説明します。

    Geographic シリーズ プロパティ 概要
    IgbGeographicSymbolSeries LongitudeMemberPathLatitudeMemberPath 2 つの数値の経度と緯度座標の名前を指定します。
    IgbGeographicHighDensityScatterSeries LongitudeMemberPathLatitudeMemberPath 2 つの数値の経度と緯度座標の名前を指定します。
    IgbGeographicProportionalSymbolSeries LongitudeMemberPathLatitudeMemberPathRadiusMemberPath 2 つの経度座標と緯度座標の名前と、シンボルのサイズ/半径の数字列を 1 列指定します。
    IgbGeographicScatterAreaSeries LongitudeMemberPathLatitudeMemberPathColorMemberPath 数値の三角測量のために、2 つの経度と緯度座標および数値列を 1 列指定します。
    IgbGeographicContourLineSeries LongitudeMemberPathLatitudeMemberPathValueMemberPath 数値の三角測量のために、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; }
        }
    }
    

    API リファレンス