Close
Angular React Web Components Blazor Blazor
Premium

Blazor JSON ファイルを地理的な場所にバインド

Ignite UI for Blazor Map マップは、さまざまな種類のファイルからロードされた地理データをプロットできます。たとえば、JavaScript Object Notation (JSON) ファイルから地理的位置をロードできます。

Blazor JSON ファイルを地理的な場所にバインドの例

データ例

JSON ファイルからのデータの例:

[
    { "cap": false, "pop":  0.47, "lat":  68.96, "lon":   33.09, "country": "Russia" ,    "name": "Murmansk" },
    { "cap": true,  "pop":  1.65, "lat":  53.90, "lon":   27.58, "country": "Byelarus" ,  "name": "Minsk" },
    { "cap": true,  "pop":  0.58, "lat":  54.69, "lon":   25.28, "country": "Lithuania" , "name": "Vilnius" },
 // ...
]

コード スニペット

以下のコードは、マップコンポーネント内の IgbGeographicHighDensityScatterSeries を、ロードされた JSON ファイルから作成された地理的位置を含むオブジェクトの配列にバインドします。

<IgbGeographicMap
    @ref="geoMap"
    Height="100%"
    Width="100%"
    Zoomable="true" />
public class WorldPlaceJson
{
    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 async void MapBindingDataJsonPointsOnViewInit()
{
    var map = this.geoMap;
    var url = "https://static.infragistics.com/xplatform/data/WorldCities.json";
    var client = new HttpClient();
    var json = await client.GetStringAsync(url);
    var geoLocations = new List<WorldPlaceJson>();
    using (var document = JsonDocument.Parse(json))
    {
        foreach (var item in document.RootElement.EnumerateArray())
        {
            if (!item.GetProperty("cap").GetBoolean()) continue;
            geoLocations.Add(new WorldPlaceJson
            {
                Name = item.GetProperty("name").GetString(),
                Lat = item.GetProperty("lat").GetDouble(),
                Lon = item.GetProperty("lon").GetDouble(),
                Pop = item.GetProperty("pop").GetDouble(),
                Country = item.GetProperty("country").GetString(),
                Cap = item.GetProperty("cap").GetBoolean()
            });
        }
    }
    var series = new IgbGeographicSymbolSeries
    {
        DataSource = geoLocations,
        LatitudeMemberPath = "Lat",
        LongitudeMemberPath = "Lon",
        MarkerBrush = "rgba(255, 255, 255, 1.0)",
        MarkerOutline = "rgba(135, 5, 255, 1.0)",
        MarkerThickness = 1,
        MarkerType = MarkerType.Circle
    };
    map.Series.Add(series);
}

API リファレンス

IgbGeographicHighDensityScatterSeries IgbGeographicSymbolSeries IgbGeographicMap DataSource LatitudeMemberPath LongitudeMemberPath